Adds a BrooklynObject super-type, and removes a bunch of duplicated code

Note the `BrooklynObject` is extremely simple just now. The thinking is to add to that, to remove duplication from Entity+Location+Policy+Enricher, and to make them more consistent for their API+impl for config etc.