Fast construction of BaseStoreRoutingPlan objects

Cleaned up code that was quickly hacked to ensure BaseStoreRoutingPlan
objects are "fast" to construct. In this clean up, managed to make
construction constant time (sub-microsecond on my
workstation). Basically, the struct that had been expensive to construct
already existed in the Cluster object and its reference could simply be
copied.

Cluster.java
- renamed "numberOfTags" to "numberOfPartitionIds"
- replaced map with array for partitoinIdToNode lookups

BaseStoreRoutingPlan
- TODOs and comments

ConsistentRoutingStrategy
- simply copy the partitionIdToNode lookup from cluster object

StoreRoutingPlan
- Pre-compute the mapping of partition Id to replicating list
- TODOs and comments

test/integration/voldemort/performance/StoreRoutingPlanPerf.java
- performance test of various cluster/storedef combos:
  - BaseStoreRoutingPlan (fast to construct!)
  - StoreRoutingPlan (slow to construct, but faster than it had been)
  - PartitionBalance (slow to construct, but faster than it had been)
Address minor code review feedback

- cleaned up TODOs and comments
- added TODO to incorporate Abhinays work on "metadata listener"