Zone check, store name in error, unit tests

1) When Server fails to start because of an invalid store, the store is
logged in the error message. So that it is actionable.
2) Added checks to zone proximity list to avoid same zone and duplicate
zone ids.
3) Modified Zones from LinkedList to ArrayList, as get operation is more
efficient in ArrayList than the LinkedList.
4) Refactor the common code in zone calculations to common functions.
5) Added unit tests to cover the new checks added to zone proximity
list.