Nested structures implementaion: Hamster.from and Hash#put_in

This is an attempt to tackle the nested structures feature (#140). It implements:

* `Hamster.from` to allow generating deeply-nested Hamster structures from Ruby objects (consider a JSON-like structure of nested Ruby Hashes and Arrays).
* `Hamster::Hash#put_in` to allow modifying a value in a deeply nested Hamster::Hash structure, creating new parents as-needed along the way. Note that this currently ignores the possibility of a `Hamseter::Vector` somewhere along the path. Need to think if we want to solve this or leave it as-is.

Comments are of course welcome.
Basically something similar to the `Vector` and `Set` handling below, something like:

```
key_value_pairs = obj.map { |k,v| [from(k), from(v)] }
Hamster::Hash.new(key_value_pairs)
```

Probably even clearer code. WDYT?