- allow hash values to be nil
- support conversion of arrays of hashes to properties
  e.g.
    props = {:foo => [{name: :bar},{name: :baz}]}.to_properties
    props.foo.first.name

refactored the properties class to make it clearer that we look for keys on the hash first
then look for public methods on the hash
then give up and pass to super
add support for serialisation to hstore