integrate btdigg search api (issue #198)

initial btdigg implementation (issue #198)
* depends on frostwire-common search-engines branch ([PR #7](https://github.com/frostwire/frostwire-common/pull/7))
* sends GET request to api.btdigg.org and decodes response
* de-serializes JSON response and passes objects to GUI
* displays search results in the GUI
* added documentation for the call chain initiated by search queries
* added some simple GUI acceptance tests

NOTES:
* this feature appears to be working well but is not quite completed and many breadcrumbs left behind but i offer PR for evaluation and critique
* results were hidden because a valid filename extension is required
    for a proper result but this is not enforced and so was not obvious
    the source of this bug took some digging to uncover and resulted in the callchain document included 
    the BtDigg results do not contain any filenames only magnet links so this was kludged for now

TODO:
* assert valid file extension for result
* add '.magnet' MediaType or extension to '.torrent' MediaType
* implement paged queries (capped at 10 results for now)
* connect details page (if it is not yet working) and add string for tooltip? in SearchMediator.java like:
    static final String ARCHIVEORG_DETAILS_STRING = I18n.tr("View in Archive.org");
* figure out what is a Crawlable to ensure this is the proper *SearchPreformer class for JSON API paged queries
* dry out AbstractTorrentSearchResult sublasses and move AbstractTorrentSearchResult to outer dir

perhaps there was a reason why we returned a new list everytime the search engines were asked for.
I bet this will introduce unwanted mutability. I'd try to leave this as is for this patch, and then if you want to refactor this, submit it on another patch after you've throughly tested that making this list reusable won't cause any harm.