Initial version of HPX backend
Plug direct solve at coarse level into dependency graph

@hkaiser, I forgot to do this in the previous commit. The fact that it
still worked as intended confirms that everything is sequential at this
point.
Coarse solve should depend on rhs, not on solution
Switch from direct continuation with then() to dataflow()
Fix dataflow bug in spmv products

Any updates to x in [y = A * x] should come after y is computed.
Use mutex instead of atomic to accumulate inner product results
Stricter dependency managing
Switched to hpx::spinlock from std::mutex
reset hpx counters before the solve step
Got rid of unnecessary when_all() calls
Parallelize outer loops in HPX backend

@hkaiser, @sithhell: this makes two changes:
1. Replaces outer serial for loops with hpx::parallel::for_each
   algorithms in all backend operations.
2. Replaces the combination of outer serial for loop and mutex with
   hpx::parallel::transform_reduce in inner_product_impl.

With these, (and probably with dc3968772) HPX finally manages to get on
par with OpenMP in terms of performance: the solution step for 200^3
test problem takes 25.568 sec with HPX and 25.513 with OpenMP (4 cores).

Here is the output of the test run with counters printed:
https://gist.github.com/ddemidov/e6ad5192f1ba54af1ce5
File header, const correctness, other cosmetic stuff
Parallelize HPX matrix initialization
Merge pull request #10 from ddemidov/hpx_backend

Hpx backend