Substantial refactor of JDK8 streams to use .collect() to clarify/simplify

Some instances where collect could be used were ignored, as they ended up being
more complicated and less readable than the originals.

Also upgrades Apache Commons Collections library dep to 4.0, to enable use of
generified SetUniqueList.

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>