Fix transaction handling

* Ensure an entire run of `license_finder` is saved or discarded en masse
  * Wrapping a save of a single dependency in a transaction isn't as useful as wrapping all groups of saves and/or deletes.
  * Otherwise, errors could leave the DB in an inconsistent state
* Backfill tests around whether dependencies are re-saved
  * We try to prevent the HTML reports from being updated with a new timestamp every time you run license_finder.  This is especially important for projects that commit their HTML reports and also run license_finder with every commit.
  * The timestamp is based on when the DB was last changed (a questionable approach... see [bug 59043220](https://www.pivotaltracker.com/story/show/67787426)) so we try to avoid changing the DB unnecessarily. These tests assert that when a dependency's license isn't changing, the DB won't be updated.