Computed properties for fields

Store attributes in a private data field. RESTless.{attr,belongsTo,hasMany} now
generate computed properties similar to ember-data.

Observers for dirty-state tracking are now added at class definition time via
`didDefineProperty` instead of at every instance initialization. Improves model
instantiation and collection loading performance.

Adds:

- Supports default values. Use `defaultValue` option when declaring an
  attribute. Supply a value or function.

- Class-level `fields` property returns options for every attribute and
  relationship in an Ember.Map. `attributeMap` has been removed.

Fixes:

- Related records passed to `create` were being overwritten by
  `_initRelationships`. Relationships are now initialized lazily using the
  `defaultValue` mechanism. Also improves performance.