Changed ArrayLists into Lists where relevant

Corrected references to ArrayList implementation types into List
interface types
Changed List getters into read only & ArrayLists into Lists where relevant

Changed List getters to return unmodifiable lists to reflect expected
read only behaviour. Corrected references to ArrayList implementation
types into List interface types.
Changed ArrayLists into Lists where relevant

Corrected references to ArrayList implementation types into List
interface types.