Refactor of setters/getters/values in regards to hydration, toJSON and more

Working on `set` and `get` methods as interfaces to custom getters and general value changing.
`set` will have a raw option that bypasses all setters (will be used by find/findAll/reload etc).
`set` will ignore timestamp attributes (these should be set directly by save/destroy)

`build -> initAttributes` will now use `set` aswell

Custom setters and getters on attributes will receive the attribute key as it's second parameter.

`toJSON / .values` will implement `get` with no key which will loop through all the values and apply custom getters

`_previousDataValues` will be populated on set if the current data value being overwritten is not undefined

`save` will set `_previousDataValues` = `dataValues`, any `changed()` call will then return false

## API

### Set
`instance.set(key, value)`
`instance.set(key, value, options)`
`instance.set(keyValuePair, options)`

set will call the appropriate setters if any are defined, else it will use internal logic

##### Options:
_raw_: (true|false), default: true - makes the setter skip dynamic setters, used internally for hydration from the database

### Get
`instance.get()`
`instance.get(key)`

get will call the approprirate getters if any are defined (for no-key calls aswell), else it will use internal logic 

### Changed
`instance.changed() // Returns an array of changed attributes`
`instance.changed(key) // Returns true/false` 
`isDirty` will map to `instance.changed()`

### Previous
`instance.previous(key) // Returns previous value for key`