Cherry pick "more migrations and write support for api"
When updating the <services> only replace the specific <service> with a matching name

Signed-off-by: David Greaves <david.greaves@jolla.com>
The /find applies to get and put requests as a detail, not a list.
Handles 404 with GET; and both modification and creation with PUT

Signed-off-by: David Greaves <david.greaves@jolla.com>
Make lsr read-only (but leave the logic for write handling in case it is needed)

Signed-off-by: David Greaves <david.greaves@jolla.com>
Add the webhook_diff assistant

Signed-off-by: David Greaves <david.greaves@jolla.com>
Refactor the boss launch functions out to allow them to be used in the model

Signed-off-by: David Greaves <david.greaves@jolla.com>
Refactor the handle_tag function to become a method to enable WebhookMapping.trigger_build()

Signed-off-by: David Greaves <david.greaves@jolla.com>
Rename lsr to avoid confusion with the readonly dynamic attribute
Return a message from handle_tag() so it can be used by /trigger API call

Signed-off-by: David Greaves <david.greaves@jolla.com>
Add WebhookMapping.trigger_build()

Signed-off-by: David Greaves <david.greaves@jolla.com>
Add a /trigger ability via a PUT method

Signed-off-by: David Greaves <david.greaves@jolla.com>
Update spec to support webhook service and add dependency on lxml and (for Suse) python-South

Signed-off-by: David Greaves <david.greaves@jolla.com>
Add a webhook creation script: wh <project> <package> <git repo> [<branch>]

Signed-off-by: David Greaves <david.greaves@jolla.com>
Verify Project restrictions when handling incoming payloads; not just at validation

Signed-off-by: David Greaves <david.greaves@jolla.com>
Add some explanatory text for Projects

Signed-off-by: David Greaves <david.greaves@jolla.com>
Add migration for uniqueness constraint