Implement __getitem__, __iter__ and __contains__ for object properties

This commit introduces more convenient access to object properties. The
following are now possible:

1. Direct access to object properties:

       object['property-name']

   instead of

       object.properties['property-name'].value

2. Checking whether a property of an object is set:

       if 'property-name' in object:
           ...

3. Iterating over property names and properties:

       for name, prop in object:
           print 'name %s, type %s, value %s' % \
                   (name, prop.__class__.__name__, prop.value)
Merge branch 'jannispohlmann/convenient-property-access'

Signed-off-by: Jannis Pohlmann <jannis.pohlmann@codethink.co.uk>
Reviewed-by: Richard Maw <richard.maw@codethink.co.uk>