Moved child key inference to ManyToOne::Relationship

* OneToMany::Relationship#child_key now delegates to inverse (m:1)
  relationship in case inference is needed on first access.
* Simplified inference rules in model initialization
Allow Collection#[] to act the same as Array#[] with 0...0

* Returns empty collection

[#956 state:resolved]
Remove unecessary method removal from spec

* Causes errors on 1.9, and has no effect on 1.8.6 and 1.8.7.  Probably
  an artifact of testing
Only persist NULL values for explicitly set columns without defaults

[#958 state:resolved]
Removed #property_prefix from Relationships

* Pushed child_key_options into m:1 relationship since 1:m does not handle
  FK inference anymore.
Unified specs for Collection#create/#create!, #update/#update!, #save/#save!

* Behavior in terms of what is persisted should be identical between
  each of these.  The primary differences are mainly how they go about
  doing them, and by convention which should execute hooks or not.
Pass through arguments/block in Model#new to allow custom #initialize

* Separated discriminator logic so it is chained with Model#new only when
  the discriminator property is added.

[#937 state:resolved]
Extracted finder specs from shared collection spec
Updated Model to pass finder specs

* This is a first pass.  Alot of the logic is delegated to Collection,
  but will gradually be factored out into a module that is included
  into Collection and Model.
* Updated many finders that extract a single Resource to orphan the
  resource from the Collection.
* Specs for some finders are commented out until they can be moved
  into Collection specific specs.
* Split up the concept of adding/removing to a Collection and
  orphaning/relating.  Orphaning means that the Resource no longer
  has a link back to the Collection.  It does not mean that the
  Resource is not included in the Collection though.  This may be
  further refined so that a Resource is only related to a Collection
  inside an "each" block, but otherwise not relatred.  This will allow
  for SEL to occur when looping over a Collection, but not when
  extracting and working with a single Resource in isolation.
Fixed subtle differences between 1.8.6, 1.8.7 and 1.9.1 and FK inference

* Different versions of ruby evaluate the code in different orders causing
  the FKs to not be inferred the same across ruby versions.  Updated the
  code to become more explicit and specs now pass across all supported
  versions of Ruby
* Updated m:m #through and #via, and Relationship#inverse to lazily
  evaluate the relationship on first use.  Evaluation of options is also
  handled similarly.
* Simplified Relationship comparison code, and removed special purpose
  methods like #source_model? and #target_model? because child_model?
  and parent_model? satisfy all use cases.
* Removed child_key? and parent_key? because they are no longer
  necessary.  child_properties and parent_properties can be used to
  check and see if a custom key is defined or not.
* Minor spec fixes
Order model mix-ins so property helpers are mixed-in before relationship
Extract default attribute setting into helper method

* Set default attributes in Collection#_save
Fixed Collection#blank? to work

* Fixed delegation code in Collection to only forward methods explicitly
  defined in the model to it, rather than methods that could've been
  mixed in or inherited from Object.

[#976 state:resolved]
Pass in repository name into Model#serial and Model#key when necessary

[#929 state:resolved]
Fixed bug in Model#first preventing :offset from being used

[#944 state:resolved]
Updated SQL generation to not use bind values for nil
Minor fixes to make specs pass on JRuby for non-DO adapters
extracted methods from DataObjects adapter to support
- custom limit and offset support
- custom RETURNING clause
- operators that are implemented as functions
initial implementation of Oracle adapter to pass adapter_shared_spec tests
modified default values clause for Oracle
fix for limit and offset conditions for Oracle