removing storage name from Metadata as first class citizen, replacing it with annotations (merged with emils changes)

Merged with Emil's changes and incorporated previous CR feedback

@anpete @emilcicos 
The problem is that ColumnName always returns something, even if the column name is the same as property name. Ideally, we would want to scaffold this call only in cases when database name is different than model name. I did change it to use property["ColumnName"] instead.