Refactored all the versions of DB.existsEntry to DB.existsDay

The new version uses a ad hoc query instead of checking the return value of
DB.getDay()
Refactor of DB.getDays to DB.getDatesList
Refactored DB.insertNote to DB.insertEntry
Renamed Day.getDay to Day.getDate

It's less confusing.
Refactor of DB.getNote to DB.getEntry
Added the new Entry.setNote and Entry.setMood

These two are protected methods to be used only by DB.
I need them for DB.setEntryNote and DB.setEntryMood, that will be created
with the next commits
Refactored DB.setNote to DB.setEntryNote

I've changed a little bit it's signature to be public void instead of
public Entry.
Thanks to Entry.setNote I don't need anymore to create a new Entry with
the new note, but I can simply update the given one.
Replaced DB.updateMood and DB.removeMood with DB.setEntryMood

It's a single method that can remove a mood simple by passing null to it
Refactor of DB.deleteNote to DB.deleteEntry

I've also decided to remove the throw InvalidOperationException for all the
previous cases:
    - Entry out "grace period": Entry now can be always delete.
    - Entry that doesn't exists: db.delete() will always be successful
Renamed DB.setPhoto to DB.setDayPhoto

This way is more coherent with other methods like DB.setEntryMood and
DB.setEntryNote
Minor docstring corrections in DB and DBInterface