Enforce scope mutual exclusion for trusts

We already warn if you try to scope a domain and project together. This
should be extended to trust scoping rather than clobbering the existing
scope.

Change-Id: I9d8fe001b65588b1c21e58f38a47456fdad85ee1
Related-Bug: #1288223
Add a positional decorator

This decorator allow us to define that certain parameters are strictly
keyword arguments only, without sacrificing the convenience of having
those arguments listed in the function definition.

This will mean that we are no longer trapped maintaining backwards
compatibility for the order of keyword arguments.

The enforcement levels should allow us to start putting warnings on
existing functions and strict enforcement on new functions.

Partial-Bug: #1295881
Change-Id: Ic0a196874930e7be8362df50594471ab8037c5b2
add functional test for cache pool

Change-Id: Id12c6175dc5bf72d6c453b8ab2d66652eed13656
Related-Bug: 1289074
Merge "Enforce scope mutual exclusion for trusts"
Merge "Add a positional decorator"