Initial version of MapReduce guide

This PR contains
* Code for MapReduce guide
* Unit test 
* Packaging into ZIP 
* README updates 
I'd say right away what is the logic. E.g.

Number of reducers is set to 1 in the MapReduce configuration above which makes all [ip, count] pairs to be consumed by single instance of the following reducer class. After aggregating the total number for the IP, we write IP, count pair into a max-heap (implemented with PriorityQueue). We keep the heap to contain no greater than 10 elements to prevent OOM and to have at any time top 10 IPs in it.