Make use of flag optional in bind

Expose an additional function, bind.WithFlag(), which allows callers to
use the previously-default "global flag" mode.

This change allows the bind string parser (etc.) to be used without
unwanted side effects. The behavior of the top-level "goji" package has
not been changed.

Fixes #47.
Add compatibility for YAML in Ruby 1.8

For Bad Reasons (tm), Ruby 1.8's YAML parser expects a lot more spaces
than Ruby 1.9's does. Let's humor it and give it those spaces.
Only add log.Lmicroseconds if log.Ltime is set

Also, move it out of Serve so it's possible to override.
Fix race in state machine compilation/invalidation

Previously, a state machine invalidation could have raced against an
in-flight routing attempt: if the invalidation occured after the routing
attempt had already completed its nil-check (choosing not to compile a
new state machine) but before the state machine was atomically loaded to
perform routing, the routing goroutine would begin to panic from
dereferencing nil.

The meat of this change is that we now return the state machine that we
compiled (while still holding the lock), and we only ever interact with
the state machine through atomic pointer loads.
Add App Engine support

App Engine disallows package unsafe. As a workaround for the (unsafe)
RCU atomic pointer shenanigans we pull in order to avoid taking a lock
in the hot routing path, let's just grab the lock. Honestly, I doubt
anyone will notice anyways, especially considering the fact that App
Engine is single-threaded anyways.

Fixes #52.