Changes from NitroXy

The commit messages are self explanatory, but a summary follows:

* Validations (in a subclass)
* default_order
* toString()
* support  for creating objects with new (array("foo"=>"bar")) (by not marking them as existing automagicly)
* clone() : Create (but doesn't save) a new object
* static::first(filter) and static::one(filter): Both return the first result, but one throws an exception if more than one item was found
* adds static::update_attributes(data) that updates or creates a new object depending on the [id] field in the given data.