Clean up install_github parameters pull and branch

The `ref` and `pull` parameters are mutually exclusive, and the `branch` parameter has been deprecated. The latter two should be removed, and the `ref` parameter should now also accept functions.

If `ref` is a function, it will be called with a named list that contains all other parameters (after parsing with `github_parse_path` and obtaining access tokens), and return an updated version of this list. Implementation and usage examples:

```
github_pull_request <- function(pull) {
  force(pull)
  function(param) {
    pullinfo <- github_pull_info(param$repo, param$username, param$pull)
    param$username <- pullinfo$username
    param$ref <- pullinfo$ref
    param
  }
}

install_github("devtools", ref = github_pull_request(475))

github_pull_request <- function(pull) {
  force(pull)
  function(param) {
    pullinfo <- github_pull_info(param$repo, param$username, param$pull)
    param$username <- pullinfo$username
    param$ref <- pullinfo$ref
    param
  }
}

github_release <- function(pos = 1, pre_release = TRUE) {
  force(pos)
  force(pre_release)
  function(param) {
    param$ref <- ...
    param
  }
}

install_github("devtools", github_release())
```

This would allow for a cleaner implementation of #350.

Usage of the deprecated parameters `pull` and `branch` can be detected by looking at `...`.

Thoughts?
What if you don't attach devtools and do `devtool::install_github("devtools", ref = devtools::github_pull(509))` ? I think that might be the problematic case.  I'm pretty sure not exporting S3 method has bitten me in the past.