Changed subList to return a share pointer
Changed ArrayList file to be implementation rather than inline