Add Distributed Array Protocol support for cyclic distribution

This PR (and the previous one supporting block-distributed dimensions) implements the protocol as written (https://github.com/enthought/distributed-array-protocol/blob/master/protocol.rst).  It doesn't reflect any of the possible changes that have been discussed.

Addresses #64.