parse_{spec|format}: moved return value instead of pointer arg, BasicFormat: no move constr.

Format has no move constructor because it stores its (immutable!) data using a shared_ptr.
Moving the shared_ptr would be wrong, but making a new reference to the shared data should
be lightweight enough.