Scans API for ophyd

Hi,

Here is the first cut again for scans using the class concept. This is tested with the xf23id1 config. 

Generic N x M scans are possible. 

Needs work on type checking and exception handling. 

Comments?
S
This isn't strictly true, if an object has a `__getitem__` but not a `__itter__` it will still be interable (it will just try `x[n] for n in itertools.count()` ).