refactor(builder): refactors builder to hide internal data.

Adds model internal property support via builder.setProperty and
Model.getProperty.

Adds attribute metadata support via builder.attrMeta and
Model.$$getDescription.