Refactored tags to use dirty flag instead of queueing save operations.

Tags were previously incomplete.  Modifications (add, delete tags) would queue
up RTM API operations for the next #save! call.  Now, a task's tags are just
marked as 'dirty' and the next #save! will make a single RTM API call to set
the task's tags.
Add tests to validate adding and removing individual tags.

Tests tag modifications via Task.tags << and Task.tags.delete.