Fix for #1192 - Support customizing reflected model through attributes

This adds support for attributes which interact with reflected model.
These conventions are applied after all of our built-in constructs so that
you can see and modify the results.
Why this change? This should probably stay as is and change the constructor instead