Node.join functionality is atterative

The previous approach was a recursive approach. The problem is that
with enoug retries, you will get a stackoverflow. With an iterative
approach this won't happen.

Also improved the logging a bit so it included the attempt number.
No more Integer object created on PartitionServiceImpl.

Java only caches Integer objects till +/- 128, so everything above that will lead
to an object being created and being disposed. This pull request changes the usage
of an ConcurrentMap with the integer as key, to an AtomicReferenceArray.

Although these objects are short lived, it is still better to not create that object
at all.
Merge pull request #1447 from pveentjer/improvement/partitionservice-unwanted-integerobjectcreation

No more Integer object created on PartitionServiceImpl.
Merge pull request #1446 from pveentjer/fix/3.x/rejoin-not-recursive

Node.join functionality is iterative
Adding new hadoop styled API
Added getJobTracker to HazelcastInstance
Added JobTrackerConfig
Added AbstractJob to typesafely configure the mapreduce task
Added Map / MultiMap KeyValueSource implementations
Started reimplementation of operations
Added onKeys / keyPredicate methods
started implementing special ExecutorService for execution of MapReduce tasks
Making NodeEngine available
Added Javadoc for most classes and method
Fixed some JavaDoc issues
Started Client proxy
More client implementation
Added jobId to identify jobs in the cluster
Fixed compile error