return nil resource on error

this change also includes some additional minor code cleanup

fixes #58
use go-querystring to construct all request URLs

this is a breaking change for a handful of Option structs that were
defining the Page option directly (they now embed ListOptions).

finishes fixing #56
Add MirrorURL field to Repository
add HTMLURL (html_url) to PullRequest
add support for basic Releases methods

include Repositories.ListReleases, Repositories.GetRelease,
Repositories.CreateRelease and Repostories.DeleteRelease.
add support for Release assets

Includes Repositories.ListReleaseAssets, Repositories.GetReleaseAsset,
Repositories.EditReleaseAsset, Repositories.DeleteReleaseAsset,
Repositories.UploadReleaseAsset.
add Thomas Bruyelle as contributor
Add support for listing watchers
add Amey Sakhadeo as contributor
Add Gitignore support.
add Zach Latta as a contributor
Accepted mime type fixes

According to various blog posts of the official github developer website
[1] [2], the mime preview for Releases and Search are no longer needed.
Moreover, they recommend to use `application/vnd.github.v3+json` for
every requests.

[1] http://developer.github.com/changes/2013-11-04-releases-api-is-official/
[2] http://developer.github.com/changes/2013-10-29-search-api-becomes-an-official-part-of-github-api-v3/
GitService: Add support for refs

This commit adds support for Git refs.

Listing of refs does not support sub-namespaces.
add Ondrej Kupka as contributor
Improve UploadReleaseAsset usage

Inspired by the Ruby version [1], UploadReleaseAsset now accepts a
simple path to a file.

The Content-Type is now determined internally using the
mime.TypeByExtension() function.

Note this version is also more flexible. Indeed, the previous version
needed an io.Reader, but actually only 3 kinds of io.Reader were bore.
This is because of http.NewRequest needs to determine the Content-Length
of the body, and it can only determine it for bytes.Buffer, bytes.Reader
or strings.Reader [2]. Note there is an issue raised about this [3].

With a path to a file, we can easily determine the file size, and then
manually add it to the request.

[1]
https://github.com/octokit/octokit.rb/blob/master/lib/octokit/client/releases.rb#L85
[2] http://golang.org/src/pkg/net/http/request.go#L447
[3] https://code.google.com/p/go/issues/detail?id=6738
IssueRequest struct for create/edit. Fixes #75.

Using an *Issue in IssuesService.{Create,Edit} means that the Labels
and Assignee fields do not serialize to the correct JSON representation
for the GitHub API. This change introduces an IssueRequest struct to
use instead, allowing labels and assignees to be set on create or edit.
add Alex Bramley as contributor

(Alex is a Googler, so no change to AUTHORS file)