Better installation flow for developing.

- Detects if libgit2 is already fetched instead of constantly fetching.
- Provides more meta information about libgit2 inside package.json.
Removed all references to cmake.
Ensure that libgit2 is removed if outdated.
Merge pull request #180 from nodegit/better-flow

Better installation flow for developing.
Removed all generated C++.
Ensure code is generated before attempting to install.
Fixed missing source from copy.cc.
Merge pull request #181 from nodegit/remove-generated

Remove all generated source code.
Compare generated JSON to the original descriptor.

A bunch of experimental files to test out the concepts of generating the
descriptor file instead of manually updating an outdated static copy.

File breakdown:

  compare.json (Will be renamed in the future)

    - The generated file that I'm comparing to new.json.

  new.json (Will be deleted in the future)

    - Reference of the v0.18.0.json file.  Should not be named new.json.

  descriptor.json (Developer maintained)

    - Inform decisions to the descriptor generation.

  t.js

    - An aptly named script that runs to generate the compare.json file.
      It's going to be way smarter and named something not experimental
      once I've figured out a spec.

  types.json

    - Maps functions/classes/structs/types/etc. to JS, C, C++, and
      Emscripten (in the future).
Automate the building of all libgit2 types.
Library changes.
Enable GitAttr.
Automate dependencies.
Generating more types and safe identifiers.
Copied changes from Emscripten branch.

That are also relevant to this branch.
Added more types.
Lots of updates, most tests passing.

I've been able to get most of the tests passing, just a handful left.
There is a little manual intervention needed for most methods to get
them to compile correctly.

I'd love help on:

- Getting more methods compiled and tested!
- Code reviews.
- Testing the code!
Save state.
Renamed build/codegen into generate.
Removed temporary files.