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.
The constructors are all private. The `operator()` are the constructing elements, thus they are not supposed pass along local state, they construct new state. This allows to have:

    // construct a block-vector of size 1000 with one partition, locally
    vector<double> v(1000, block);
    // construct a block-vector of size 1000 distributed over all localities
    vector<double> v(1000, block(find_all_localities())); 
    // construct a block-vector with 100 partitions
    vector<double> v(1000, block(100));

etc.

This way of specifying policies is aligned with the way the standard proposes to handle execution policies for the parallel algorithms.