WIP Submodules

:warning:  DO NOT MERGE :warning: 

I started with the submodules. This may take a while...  

A couple of notes: 
 * I really like the `status_name?` methods. I am very bad at typing and to guard myself from typos i wanted to extract all the ruby visible status names in one place and i got the following ugliness. On a sidenote: I benchmarked this `rb_intern` caching and it does't make any noticeable difference. 
```c
rb_ary_push(status_list,
        id_in_head            = CSTR2SYM("in_head")
);
```

 * The status names are inspired by `objective-git`. The wording may be wrong on some of them. Ideas are welcome!
 * I copied the fixtures, some tests and setup methods  from libgit2 

Things:
  - [x] geting submodules - `submodule.lookup`
  - [x] checking status `submodule.status`
  - [x] fancy status checks - `submodule.unmodified?`, `submodule.workdir_dirty?`
  - [x] persistence - `save`, `init` and `sync`
  - [x] attrubutes - `name`, `url`, `path`, `url=`, `fetch_recurse_submodules?`
  - [x] oid getters - `head_oid`, `index_oid`, `workdir_oid`
  - [x] rules - ignore and update rules: getter, setter and reset
  - [x] iterator - `submodule.each`
  - [x] submodule add - `git_submodule_add_finalize` and `git_submodule_add_setup`
  - [x] get submodule's repo - `git_submodule_open`
  - [x] refactor `rewrite_submodules` - it's almost direct c -> ruby translation currently. can be better! 
  - [x] docs
  - [ ] more tests

Missing:
  - `git_submodule_location` - couldn't find a reasonable way to integrate this
  - `git_submodule_owner` - we don't expose owners
  - `git_submodule_reload_all` - this invalidates all submodule instances, and causes segfaults. 

```
submodule [24/27]: .........M...M..M..........
  > missing: git_submodule_location, git_submodule_owner, git_submodule_reload_all
```