Intelligent association typing and multikey support

Should allow associations to automatically create foreign keys of the
same time as the primary key(s) of the model they reference and
also allowing associations to automatically create the
required foreign keys for models which have multiple primary key fields.

This change requires at least version 0.1.5 of node-sql-query to support
the multi-field join functionality used.

There is a change in the way chained finds are executed for hasAccessors,
meaning that instead of passing the id of the object you pass the entire
object. This is to support objects with multiple primary key identifiers.

```js
Model.find().hasSomething(TheSomething).all(function(err, somethings) {

});
```
Merge reusable functions into Utilities.js
Merge pull request #227 from SPARTAN563/smart_associations

Intelligent association typing and multikey support