Pre-compile routes at Serve() time

I originally exposed Compile() for exactly this use case, but apparently
I never actually implemented this. Oops.

In any event, this makes the first request a little faster (an extremely
unscientific test suggests on the order of 10 microseconds). Also, if
something goes terribly wrong during route compilation, it would fail
before we start listening on the socket.