Save Anime-/Mangalist in relation table

This allows us to store the lists of friends too! Updated all related
functions (they now have a username or userId parameter to define the
user).
Also removed the recordId field from the anime and manga table: as the
ID's provided by the API are unique we can use them directly.
Save all API details (part 1)

Now the database can store all details provided by the API:
- added required fields to the anime and manga tables
- added genre and tag tables
- added relation tables to store genres, tags and record relations (like
  side stories, sequels, alternative versions...)
- updated DatabaseManager to save the new informations (except for
  record relations, this will be part 2 of this commit ;) )
Fix database upgrade from previous version
Save all API details (part 2)

Save record relations (side stories, adaptations, summaries etc.)
Save all API details (part 3)

Save other titles of records.
Don't save the synopsis on database upgrade

This way we can force all records to be updated when loaded for the
first time in DetailView to get the new details.
Save anime prequels and sequels
Fixed search
Only pass full record on own lists

... as other lists like search or toplists (most popular) don't have
additional informations like record relations, genres, tags and other
titles.
Try to load the record from the own anime-/mangalist

If DetailView is called from an not-stored list (search result,
toplist), then it tries to load the record from the own anime-/mangalist
to show personal details (status, rating). Only if that fails it loads
the record from the API.
Fix search result page loading
Do not pass complete records to DetailView

Without passing the full record to the DV we don't need to get all
record details in the anime-/mangalist which results in faster load
times.
Fix details never saved

GETDETAILS tasks never saved the new record details because saveAnime()/
-Manga() was not updating without a username. Also changed getRecord()
in DetailView so a swipe action will always fetch from the API.
Implement some cleanup functions

As now all records are accessed by relations (anime-/mangalist or record
relations like prequels, adaptations etc.) all records in the database
that are not related somehow are "dead" records. So I implemented some
functions to delete them:
- deleteFrom(Anime/Manga)List() now checks if the deleted record is
  still related to other records and deletes it if not
- a full sync now also checks for unrelated records and deletes them
getRecords() should do something useful when offline

... so now it tries to get the record from the Database and shows a
crouton message if this didn't work.
Fix sync after beeing offline

When using the "+1 watched/read" button on IGF the dirty flag was not
set if offline, so these changes where not synced to MAL.
Also don't show the loading indicator when the connection is back and
changes are synced, only show the refresh animation.
Fix two possible NPEs
Unify AnimeRecordStub and MangaRecordStub in RecordStub

They were only separated for deserialization by retrofit, but that can
be handled in one class. Basically the getId() function just has to
return the correct variable.
Also added a check to the relation saving functions to prevent saving
a record with 0 as id.
Add getType() to RecordStub to know if it is Anime or Manga
Save parent story