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.
Use sync.Pool for go1.3 and up

This has the additional benefit of removing the need for a go1.3 branch.
Eliminate a lock in the request hot path

If you're manipulating your middleware stack concurrently with active
requests you're probably doing something wrong, and it's not worth
either the complexity or runtime cost to support you hitting yourself.

We can probably take this principle a bit further and disallow mutating
the middleware stack after any requests have been made (which will
eliminate even more complexity) but that can be a project for another
day.
Move param to https://github.com/goji/param

This package was always sort of a black sheep package, and it's time it
had a separate home.
Fix-ups from param move
Minor documentation touch-ups
Move README buttons to their own line
Don't use syscall package on appengine

Fixes #52.
Also rename files so they aren't lies
Refactor WriterProxy out of web/middleware

It turns out WriterProxy is pretty generally useful, especially when
defining custom http loggers. Expose it in a util package so that other
packages can use it.
golint
Fixing typo in example README.
Boolean logic is hard, guys :(

The result of this was that builds were broken on windows and app
engine.

Fixes #59.
Merge pull request #58 from wangjohn/master

Fixing typo in example README.
Update web.go
Merge pull request #61 from RuiAAPeres/patch-1

Update web.go