Go bob walker, go!

Port bob walker to Go.

bob walker retains his existing functionality in Go, with the exception
that he doesn't take cumulative command-line arguments, i.e.:

Invalid:
```
go run bob-walker.go -sd
```

Valid:
```
go run bob-walker.go -s -d
```
Concurrent bob walkers!*

* Admittedly a contrived use of Goroutines
bob may time out when sleeping

bob gets sleepy in drunk mode.

Sleep duration calculated using a random integer following the example
in:
http://golang.org/pkg/time/#Duration
Add turbo bob

Turbo mode means bob walker can not only be concurrent, he's also
parallelised on multi-processor systems[1].

[1]: http://www.youtube.com/watch?v=cN_DpYBzKso
Sort command-line options alphabetically

Sort command-line options alphabetically.

Except for the case statement, where we keep `-h` separate since it's
functionally different, i.e. not a mode.
Use `flag` package to parse CLI options

Parsing the CLI options this way entails some differences as evidenced
below:

```
» go run bob-walker.go -bar
flag provided but not defined: -bar
usage: bob-walker options

This scripts simulates a bob walker

OPTIONS:
  -d=false: Drunk mode!
  -s=false: Sport mode!
  -t=false: Turbo mode!
exit status 2
```

- Passing the `-h` option returns an exit code of 2 rather than 0 as it
  did previously.

- Passing an invalid flag returns an exit code of 2, rather than 1 as it
  did previously.

- Passing an invalid flag displays an error message mentioning 'flag',
  which may not be as commonly understood as the concept of an 'option'.

- flag.PrintDefaults prints the default value for the boolean options we
  specify, i.e. 'false', which is a little confusing for end-users.

The above said, using the `flag` package is a more idiomatic use of Go.
Bring back bob-walker.sh!

Partially revert cd2931373b7756056ef598da1e1cb335de00b248 so that both
Bash bob and Go bob can co-exist.
Merge pull request #5 from mattbostock/use-flags

bob using flag