CLI flags

Adds command-line flags. The same flag names as the test tool are being used for overall consistency and feel. 

Updates #12 - CLI Flags
Sure, imagine that when someone loads the package, this code runs:
```go
var memRateFlag = flag.Int("memprofilerate", memProfileRate, "Enables memory profile at the given rate.")
```
At this point `memFlag` has been declared with a default value of 4096.

....

Then, someone using the package does this:
```go
defer profile.Start(profile.MemProfileRate(2048)).Stop()
````
The `profile.Start` function runs, parsing the options and setting `memProfileRate` to 2048 as requested.

After the options are parsed, we move on to parsing the flags, where we check if `memFlag` has changed from its default value by comparing `*memFlag == memProfileRate`. This is where the unexpected behavior happens. `*memFlag` has a default value of 4096, and `memProfileRate` is now 2048 (from the functional options), thus the comparison fails so the (default) value of the flag will be set as the MemProfileRate. This is not the desired behavior.

Hope it makes sense, unless you meant to set the flag to the actual numeric value of `4096` and compare against that, but then there is not much difference.