Clean up mal_import.rb

Rebased commits:
* Rewrite get_characters and get_series methods
* Remove ResourceFetcher since we spoof UA now
* Move mal_import.rb to lib/
* Change mal_id to external_id
* Add switch for @media, adding initial Manga support
* Handle featured characters within MAL instead of returning mal_ids[]
* Handle empty synopsis case
Add create_or_update_from_hash methods

Rebased commits:
* Fix mass assignment things to expose what we will need
* Anime#get_metadata_from_mal --> Anime.create_or_update_from_hash
* Add create_or_update_by_hash to Casting and Character and Person
Prevent clobbering already-defined fields
fix simple ratings not showing
Fix character and staff methods for MALImport when media=manga
Change title to a hash of IETF codes

Hopefully eventually we can switch to this in the actual database, but
for now it'll suffice to just have it mapped onto the db fields
Finish adding Manga support to MALImport

Kind of!  We need to fix the Castings schema to support Manga castings
Add framework to test lib/ and use fakeweb
Write tests for MALImport lib
Make all the MALImport tests pass
Update admin panel to use new MALImport system
Squash some bugs in various create_or_update_from_hash methods

Anime:
 * fix title handling to use new title field format
 * remove TODO comment
 * show_type corresponds to hash[:type] not hash[:show_type]
 * compact to remove nils
 * handle characters without voice actors better (I hope)
 * return created/updated/found anime item

Casting:
 * handle character casting without a VA

Person:
 * compact to remove nils
Move convert_age_rating out to mal_import.rb
Anime.alt_title is romaji, not 日本語
Import images from MAL
Add image fields to the tests for mal_import
Convert views/user_library_view.js.coffee to JS
Fix Genre and Producer fields to use .blank? instead of .nil?
Create MicrodataHelper module
Add some generated HTML to the anime pages for delicious googlejuice

Seriously, Hummingbird has been serving a BLANK PAGE to Google for
months now, no wonder it wasn't getting good SERP rankings.

Also this has microdata, so fuck yeah.