refactored and improved polymorphic models

Breaking changes!!! Don't pass model options to Graviton.define. Pass them to Model.extend.

Model.extend now takes options as first param and prototype extension as second.