Coordinates API, take 2

This is a re-working of the coordinates API intended for v0.4 .  It is written to be a "compromise" API to address a variety of problems and suggestions that have come up since coordinates was introduced in v0.2 .  It is a companion to APE5, which will be submitted shortly.