Fix for smart_associations

Fixes an issue with generating the names and determining the types of
fields on target models for hasOne associations.
Handle `id: [...]` correctly by transferring it to keys instead of just
blindly wrapping everything in an array.

Also increased the timeout for hasMany associations tests, since they seemed
to intermittently timeout.
Refactoring to remove keys field

Appears to pass tests, removes all instances of the `keys` field on
models and instances, and replaces it with the ability to pass an array
to `id` to represent multiple primary keys.
Merge master branch changes
Merge remote-tracking branch 'origin/master' into remove_keys

Conflicts:
	lib/Utilities.js
Fix problem with extendsTo and custom key types

Should fix a problem with propagating identifier field types to an
extended model.
Added tests for smart_associations

Some preliminary tests to ensure that everything functions as it should.
Covers extendsTo, hasOne and hasMany.
Merge remote-tracking branch 'origin/master' into remove_keys
Merge remote-tracking branch 'origin/master' into remove_keys
Merge pull request #228 from SPARTAN563/remove_keys

Refactor out keys field