Correctly normalize consumer fields on update

The self._normalize_dict() function in ConsumerCrudV3 creates a
copy of the consumer passed in and doesn't modify it, so this
line of code didn't do anything. The code is changed to use the
result as the new consumer rather than discarding it.

Closes-Bug: #1276857
Change-Id: Iec7573001ad73f0dc9192a4e74b1c35adc2cda4c
Cleanup oauth tests

In a lot of places this code was using dict.get() where [] makes
more sense because the code then assumes that the field was
present and had a value. Using .get() just means that if the code
changes the error would be an unexpected TypeError on a different
line than where the problem actually was.

Also, building of simple url strings was simplified to remove the
dict so that they could be kept on a single line.

Change-Id: I98b5631e02fe1456f0f583c4ec55c9ac0f8c4c35
Merge "Correctly normalize consumer fields on update"
Merge "Cleanup oauth tests"
Additional notifications for revocations

OAuth and assignment notifications that will
trigger revocation events.

Change-Id: Ice91de6345df3d9f3e13dd7c032993669ca9d0af
Implements: bp revocation-events
Merge "Additional notifications for revocations"