Clients supply encoded strings as the id portion of REST API
paths. These strings need to be decoded within the view code
as some encodings are specially handled. Try to prevent misuse
by wrapping strings in a type-safe IdString wrapper that forces
developers to decode with ".get()" before using.
The raw string can be obtained with ".encoded()", an obvious
hint that the return value will still be URL encoded. This is
used in only a handful of locations where special parsing must
be performed.
Change-Id: Ied5747d1fe8cc0f2dc24017f7aacc2fcab69a37c