Data parallelism (CPU)

This is a working-in-process attempt to do data-parallelism (in CPU backend for now) by making use of Julia's parallel computing and `SharedArray`.

* [x] Data shuffling in `HDF5DataLayer`
* [x] Remove the `System` type
* [ ] Sharable parameters
* [ ] Parallelized solver scheduling
* [ ] Refactor: back-merge with single-process solver