Split symbols into implicit OR groups (closes #28)
Start work on serializing; clean up languages.
Finish JSON stringification (closes #29)
Implement /search.json route (#27)
Part of #26. Move __init__.py to crawl.py.

Add:
    bitshift/crawler/(__init__, crawl).py
        -Move `__init__.py` to `crawl.py`, and add a `main` block to allow
        running the crawler via `python -m`.
Add parse() and insert() calls to crawler.

Add:
    bitshift/crawler/indexer.py
        -Add `parse()` and `insert()` calls to `_insert_repository_codelets()`.
Change format of string returned from ruby server to correct symbol table format.
This is ugly, but it improves the current setup.
Some fixes, mainly involving language detection.
Try to make exception reporting more useful.
Untested fix #33.

Add:
    bitshift/crawler/indexer.py
        -Add conditional to remove the full path of a repository if the owner's
        directory contains only one sub-directory.
Strip encoding lines.
Fix #34.

Add:
    bitshift/crawler/indexer.py
        -Add a `try-except` block to catch the `UnsupportedFileError` exception.
Make sure parse servers return json loadable data.  Make sure Java server closes client connection.
Adjust test for new language dict.
HAHA WHAT ARE ITERATORS
Change format of string returned from ruby server to correct symbol table format.
Make sure parse servers return json loadable data.  Make sure Java server closes client connection.
Fixes.
Adjust test for new language dict.