Treat `any_args` as an arg splat.

This allows it to match an arbitrary number of
arguments at any point in an arg list.

Closes #707.
Convert stateless arg matchers to singletons.

This saves on memory (fewer objects to GC!).
Provide a clear failure when invalid args are passed to `with`.