model: make Task abstract
model: make Task abstract

It does not make sense to allow users to directly construct instances of
`Task`.

At the same time, remove some methods which have become effectively
useless because Task now can't even be constructed directly.

nightism/addressbook-level4,CS2103AUG2016-T11-C4/main,CS2103AUG2016-T11-C4/main,nightism/addressbook-level4,snehasp13/main,snehasp13/main