FIX: Fix for issue #12.

It is necessary to get the ranks for the intracommunicator created by
the DistArayContext's __init__() since an intracomm's ranks may be in an
arbitrary order when compared to the ranks of the parent communicator.
The mapping between engine ID's and the intracomm's ranks is the correct
association to use.

This bugfix refactors the __init__() method into two private methods: `_make_intracomm()` which creates the intracommunicator for use by a `DistArrayContext` object, and `_set_engine_rank_mapping()` which sets the `ranks` attribute accordingly.