Improve property_parser, rearrange imports

- We were doing a lot of unnessersary imports, that's fixed
- Property() constructor can generate an entire tree easily
- Add __contains__() method
- Prop['key'] = 'value' creates the sub-Property if needed instead of
throwing IndexError