Update transaction links rather than creating

If the link is of type transaction, update the link rather than creating
a new one

This could be handled by passing a link_id to the link_data, but as the
admin app currently only support transaction_links and not other links
we have gone with this solution
Update test to not rely on factory boy sequence

Although there is still only 1 link in the db, factory-boy has used the
sequence link-2 instead of link-1 - if we are explicitly testing for
values on objects we shouldnt rely on the factory boy generation - its
more useful for not having to specify values that are not to be tested.
Allow posting empty module id

This is to avoid doing a lookup on an empty key, which results in a
server error, and is to follow the "be liberal in what you accept"
principle.
Merge pull request #250 from alphagov/update-transaction-links-rather-than-creating

Update transaction links rather than creating
Merge pull request #251 from alphagov/allow-posting-empty-module-id

Allow posting empty module id
This rescues when the module type id is not set in the request.
Merge pull request #253 from alphagov/dont-die-of-empty-modules

This rescues when the module type id is not set in the request.
Lookup dashboards by slug

- Gives us nicer urls like /edit/name-of-dashboard
- Slug is also a unique identifier
- Avoids exposing uuid to end user

I prefer this way of looking things up because it's kind of human readable but at the same time works for the computer. UUIDs are still really useful for how we internally manage resources. For example we could potentially look up the history of a resource whose `slug` has changed multiple times, but the `UUID` will have remained the same.
Change `spotlight_config_migration.py` to use dashboard slug

- (✿◠‿◠) Tried and tested with today's database! (●ω●✿)
Accept either slug or UUID to return dashboard resources

- A bit fugly in the views because we're doing stuff like `is_uuid(identifier)`
- Allows us to do e.g. `/dashboard/{uuid}` and `/dashboard/{slug}`
- Could do with a refactor but I think that can probably be bundled up with https://www.pivotaltracker.com/story/show/78992766
Add `test_list_modules_by_uuid_or_slug` test

- Show that you get resources back by slug or uuid
Merge pull request #255 from alphagov/get_by_slug_or_uuid

Get dashboard by slug or UUID