Add Basic Auth support

This adds basic auth support. Requests to the metrics endpoint will require basic auth if -auth.pass is set.
What is the reason to initiate BasicAuth even if not requested? What about this:

```go
handler := prometheus.Handler()
if *authUser != "" || *authPass != "" {
  handler = &basicAuthHandler{
    user: *authUser,
    pass: *authPass,
    next: handler
}
```