Submodules!

`SubmoduleCollection`
- [x] `this[name]`
- [x] Hackish `GetEnumerator()`
- [ ] Correct `GetEnumerator()` - need marshaling help
- [ ] `Add()` - I'd suggest we tackle this with a follow-up PR

`Submodule`
- [x] `Name`, `Path`, `Url`
- [x] `FetchRecurseSubmodules`, `Ignore`, `Update` rules
- [x] `Init()`, `Reload()`, `Save()`, `Sync()`
- [x] `RetrieveStatus()`
- [x] `Stage()`

`Index`
- [x]  	af9c7974b52afe2969276d5670df6ff022a5ca0e
- [x] `Stage(submodule)` (see #220)

Tests
- [x] Works on my machine
- [ ] Real tests

While I'm working on setting up proper tests, I thought I'd get this out for feedback...