Adds BrooklynType super-class

- use PolicyDynamicType and EnricherDynamicType, deleting previous
  classes.
- adds BrooklynTypes, deprecating old EntityTypes
Add persisted getTags to BrooklynObject

- no longer just Entity
- deprecate tag methods on Entity (getTags/addTags/etc), and now have
  getTagSupport() so that the Entity interface doesn’t get as cluttered.
- adds requestPersist() to AbstractBrooklynObject
Push managementContext up to AbstractBrooklynObject
ChangeListener: use BrooklynObject

- instead of having separate methods for Entity, Location, etc,
  just have one for BrooklynObject.
- move requestPersist() impl up to AbstractBrooklynObject
Tidy Internal*Factory

- deprecates isNewStyleEnricher etc, in preference for general
  InternalFactory.isNewStyle
Adds AbstractBrooklynObjectRebindSupport

- removes duplication from Basic*RebindSupport, for them all
  extending AbstractBrooklynObjectRebindSupport
- adds MementosGenerator.newMemento(BrooklynObject)
- moves init+rebind method declarations into AbstractBrooklynObject
Move construction mess into AbstractBrooklynObject

- delete duplication from AbstractEntity, AbstractLocation, etc
Move isRebinding up to AbstractBrooklynObject
This closes #110

Merge remote-tracking branch 'apache-gh/pr/110'

Conflicts:
	api/src/main/java/brooklyn/basic/BrooklynObject.java
	core/src/main/java/brooklyn/basic/AbstractBrooklynObject.java
	core/src/main/java/brooklyn/enricher/basic/AbstractEnricher.java
	core/src/main/java/brooklyn/entity/basic/AbstractEntity.java
	core/src/main/java/brooklyn/entity/proxying/InternalPolicyFactory.java
	core/src/main/java/brooklyn/entity/rebind/BasicLocationRebindSupport.java
	core/src/main/java/brooklyn/location/basic/AbstractLocation.java
	core/src/test/java/brooklyn/entity/basic/EntitiesTest.java

Conflicts mainly new tags methods from #109, resolved and confirmed tests pass.
Also added LocationType and related classes.
missed commit fixing test failure in #110, adding
prototype of service_up being derived from service_not_up_indicators
add WhenFunctions which allows `Functionals.when(false).value("F")` approach to building up functions
add a new "updatingMap" enricher which helps when multiple enrichers contribute to a map, and use it for the new chaining of service_up behaviour
minor test utils fixes, including `assertThat`
refactor Enrichers.builder() types to give correct generics for published sensor
add support for suppressing duplicates in enrichers, defaulting false for most, but true for UpdatingMap; and in Enrichers.builder() use better superclasses to support tags, uniqueTags
simple cleaned up illustration of service_up from not_up computation
a bunch more service-up checks (WIP)
fix enricher type test with suppress duplicates
move if to when, and misc cleanups