Prevent duplicate widgets

In order to not pollute the database with duplicated widgets, this
change tries to find existing shortened URLs first.

@stuartnelson3 What is the reason to set last_accessed already during creation time? I find that a bit confusing, as it doesn't mean that the URL actually got accessed. As there is also a `created_at` timestamp, wouldn't it make more sense to leave `last_accessed` null, until the URL got actually accessed?