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?
I have tested the example you provided in a fresh session without `devtools` attached, it runs without error. It is true that `getS3method("github_ref")` doesn't find anything, with or without `devtools` attached. I have also noticed that the following fails:

    devtools:::github_ref(devtools:::github_pull(509))

Both with and without `devtools` attached. 

But I think this only matters if we want the user to call `github_ref()`, which we don't. Only `devtools` code is supposed to ever call `github_ref()`. (I have also tested creating the generic *inside the function `github_get_conn`* -- works as well!)

Since the tests succeed and the implementation works -- may I suggest abstaining from exporting for the time being? Adding an export can be done easily, but un-exporting something hardly ever happens. Also, this would save us from adding documentation for an otherwise useless item.