WIP: Implement Arbitrary Collection Support

Fixes #1941.

- [ ] Configuration handling for `collections` key
- [ ] Configuration handling for `render` key
- [x] Read in all `Collection`s
- [ ] Render collections in `render` config array
- [x] Figure out how `pages` should work with relationship to `Collection`
- [ ] Clean up `Site` with any pages/posts handling
- [ ] Write a million tests
- [ ] Security review (/cc @jekyll/gh-pages)
- [ ] Validate collection names (maybe not data, for example? Or should data become a collection and we add in the backwards-compatibility of the current implementation as necessary?