BUG-1440: improve CompositeNodeDataWithSchema

- Hide internal state, making fields final
- Preserve field order in augmentations
- Use preconditions and simplify checks
- Emit correct child sizing hints
- Speed up predicate/augmentation builder

Change-Id: I2192d9093aa3909a960f4172468d971d2fd51aec
Signed-off-by: Robert Varga <rovarga@cisco.com>
BUG-1440: remove open-coded Multimap

The code is completely equivalent with what Guava's Multimap provides,
so let's just use that.

Change-Id: I8f0a22a89c4c31a62f16ebd970f940cfc04af2ff
Signed-off-by: Robert Varga <rovarga@cisco.com>
BUG-1440: use a precondition instead of a throw

Removes string concat in exception text and makes the code more
readable.

Change-Id: I8a672b0e355b61119db3e48bc290853bbc78a429
Signed-off-by: Robert Varga <rovarga@cisco.com>
Merge changes I8a672b0e,I8f0a22a8,I2192d909

* changes:
  BUG-1440: use a precondition instead of a throw
  BUG-1440: remove open-coded Multimap
  BUG-1440: improve CompositeNodeDataWithSchema