Change to use 1.9 lambda syntax
Change Hash.infer_from to be more consistent with similar code
Fix bug when inferring the type for a class instance

* The code was matching collection types, with non-object
  member_types against class instances. By definition a class object
  has no defined member_type, so only types with Object as a
  member_type should be returned.
* A similar bug was affecting Hash types. A Hash should only match a
  base type.

[Fix #3]