Operate does three things:
1. It creates an instance of operation-class
using any keyword parameters
as initargs.
2. It finds the asdf-system specified by system
(possibly loading
it from disk).
3. It then calls traverse
with the operation and system as arguments
The traverse operation is wrapped in with-compilation-unit
and error
handling code. If a version
argument is supplied, then operate also
ensures that the system found satisfies it using the version-satisfies
method.