Specmove

Pokes quite deep into the engine and needs some more testing before merge.

See #327 for an earlier pull request.