Functional data structures & data sharing

Implemented tail, drop, dropWhile, setHead and init from section 3.3.
Also added tests for new functions.