Ability to specify custom cards

Created a new flag -C= if given a file, parses the file for custom card definitions and adds them to the cards list. If given a string, parses the string as a semi-colon separated list. I've included a customcards_template.txt to demonstrate the format.

Quite a lot of code, but I've tried to keep the changes limited to the new custom_card.h/.cpp files. I'm using the boost::spirit::qi parser, and I've only tested on OSX and Linux, so please do compile & verify it on Windows before merging. Thanks!