Distributed vector

This pull request adds a first implementation of a distributed vector (`hpx::vector`). This is a segmented array, where the segments can live on different localities. It exposes a segmented iterator which is modelled after Matt Austern's classical paper (http://lafstern.org/matt/segmented.pdf). This pull request also adds integration of this data structure with `hpx::parallel::for_each`.

I would like to ask to merge this into the master branch so others can start using it. I believe `hpx::vector` will add a valuable higher level abstraction to HPX, but it definitely needs some iterations in terms of the exposed interface and implemented functionality.

Several people have contributed: @sharmaar12 who worked in the context of GSoC 2014 and @gbibek who added distribution policy in the context of his masters thesis.
Are there any underlying requirements to define the interface in such a fashion? It looks odd to me to need to first construct an object for the policy and then invoke operator() on it. Why can't I use the ctors directly? As far as I can see, operator() doesn't pass along the state of already constructed object.