Fixes an issue with high id being too high after recovery

due to giving the IdGenerator the wrong highId in its constructor. It used
to give it fileSize/recordSize, but now gives it the highest inUse record id.

Also deduplicated 3 versions of rebuildIdGenerator, 2 versions of
figureOutHighestIdInUse (which was badly named btw) and some other
deduplication.
Merge pull request #3095 from tinwelint/1.9-fix-too-high-id

[1.9] Fixes an issue with high id being too high after recovery
Merge remote-tracking branch 'upstream/1.9-maint' into 2.0-maint

Conflicts:
	community/embedded-examples/src/test/java/org/neo4j/examples/AclExampleDocTest.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/store/AbstractDynamicStore.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/store/AbstractStore.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/store/CommonAbstractStore.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/store/PropertyStore.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/store/RelationshipTypeTokenStore.java
	community/kernel/src/test/java/org/neo4j/kernel/impl/cache/ReferenceCacheTest.java
Merge branch '2.0-maint' into 2.1-maint

Conflicts:
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/store/AbstractDynamicStore.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/store/AbstractStore.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/store/RelationshipTypeTokenStore.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/xa/NeoStoreTransaction.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/xa/NeoStoreXaDataSource.java