Currently, using save! is unusable in the case that you want to be able programmatically handle specific validation errors. My proposed change also matches the way activerecord handles save! validation errors -- see docs for the equivalent class in active record here: http://api.rubyonrails.org/classes/ActiveRecord/RecordInvalid.html 
Properly initializes connection classes variables and doesn't raise when using ternary (conditional) assignment for MongoMapper.database
Delegate :distinct, :size, :reverse, :offset, :order, :empty?, :filter, :find_one, :per_page, :ignore, :only to the query.

A few user problems are fixed by this. To honor unpersisted documents, the methods without arguments (:size and :empty?) need to hit the loaded association array in the ManyDocumentsProxy instead of going to the database...tests updated to reflect this.
Also delegate :to_a to plucky
Fix issue #308 - ensure milliseconds are preserved with time values
Add ActiveRecord-style touch
Add touch option to associations
Touch the proxy if it can.
Begin defining touch callbacks
Refactor belongs_to touch as callbacks after save, touch, and delete
Ability to pass symbol to touch option of belongs_to association to update specific key
Raise an ArgumentError with a better message
Added support for options for atomic modifiers plugin. This enables passing :upsert and :safe options to the modifier operation.
now passing a proper separate options argument for modifier operations instead of forcing it in the keys argument hash
Ensure that belongs_to associations provide an ObjectId key for the foreign key, so that IDs are properly cast.
Add touch support to embedded documents
Fix Embedded Document touch
spaced options according to existing code style
Now properly inspecting for criteria, updates, and options hashes. If any more options get added to the ruby driver, we won't have to do any additional logic to pass those options through
there's no need to test for args length in criteria_and_keys_from_args