REST and Core APIs now support listing all stored property keys in the db.
Merge branch 'list-keys' of github.com:jakewins/neo4j

Conflicts:
	community/kernel/src/main/java/org/neo4j/kernel/api/ReadStatement.java
Make test more stable by avoiding triggering bug in index population.
Removed PropertyData (the old property representation)

The move of property handling to the kernel API isn't fully done. One
aspect of that "incompleteness" is that we've get the old PropertyData
class hierarchy, while using a new very similar Property class hierarchy
in new code in the kernel API. PropertyData had one #getId() method that
Property doesn't, but that wasn't used anywhere.

Also represents tokens (label/prop key/rel type IDs) as ints instead of longs

This commit only changes the in-memory representation, not any store
format. The reason this long-->int switch ended up in the same commit as
the removal of PropertyData is due to hard conflict merging jumbling up
the two separate commits into commits that couldn't have been cleanly
applied separately.

Known store constructs still storing tokens as if they were longs:
 o IndexRule propertyKey
   from the outside it now looks like it's an int, but putting/getting
   to/from the ByteBuffer uses putLong/getLong
 o NodeLabelsField
   even from the outside it looks like longs. This is mostly due to the
   wat we decided to piggy-back on the long[] labels array, where we put
   the node id (which is a long) into that array as the first element.
   Converting this to an int[] externally would incur more array copying
   back and forth between int[]<-->long[] there.
 o HA protocol Master#acquireIndexEntryWriteLock still uses long for
   labelId/propertyKeyId to not change the protocol.
 o There might be more...
More efficient cache representation of node labels

o Previously represented as Set<Integer>, now as int[].
o Also labels are included in sizeOf calculations.