Improve asynchronicity in parser

The parser now works fully asynchronously with channels, but currently suffers from an undiagnosed problem.
Limited the number of parallel downloads

The parser now features a `rate-limit` channel controlling the number of parallel downloads. This prevents the many strange errors that happened when fetching all cards from Gatherer.

NOTE: The limit is currently 100, which is based solely on being a pretty, round number in my base number of choice. It may be worth experimenting with other values.
Removed logging

The parser code contained some logging, which isn't really part of its job. This has been removed.
Reintroduced parsing

With the downloading issues solved, parsing has now been added to the parser again.
Move functions internally in namespace
Limit parallel downloads to ease the burden of Gatherer
Reduce redundancy in majic.parser

`single-card` and `double-card` have now merged into the single function `card`.
Simplify parser slightly

This just shortens some code to improve clarity and succintness.
Merge pull request #14 from emiln/fix/7-clean-up-parser

Fix 7: clean up parser