Cache rich type info for managed objects

This change makes sure that type information for managed objects is only
loaded once and cached thereafter. It also includes support for nested
properties, such that you can retrieve `config.hardware` or
`guest.ipAddress`, instead of always having to request top level fields.
Load fewer properties where possible
Merge pull request #78 from pietern/nested-props

Nested props