Resolves rspec/rspec-core#950 and adds specs

* Hopefully the code clarity is improved here
* We also change the behavior by *not* duping an object if `space` is
  not yet initialized. This should have been the behavior from the
  beginning, but it was overlooked and did not have specs.
Improves clarity of nil check
Improves strength of assertions per @myronmarston's suggestions
Changelog entry
Merge branch 'issue-950-with-specs' into 2-99-maintenance