Cache variable attributes at Read
Created by: williamfgc
Replaces linear search for prefixed attributes "var::attr1", "var::attr2", ... , and caches names inside core::Variable where appropriate at read time (BP3 at Open, BP4 at BeginStep).
Refactors core::IO::GetAvailableAttributes
moving functionality to core::Variable
and core::Attribute
Related to #1816