Refactor GS Collections usages.

The main change is to use the asSynchronized method instead of calling factory methods on the synchronized wrappers.

The second change is to use interfaces instead of concrete classes where possible.