Implement task model

* Builder now is easier to use by taking advantage of move assignment operator
  from the Task directly. 

  For example,

```
  Task task = Task::Builder::description("Hello World")
				            .deadline(tomorrow());
```
* Creating a task with empty description throws an exception.

* General improvement.
should be ```Task::Builder&& builder``` because the ref-ref is with the type... we write `char* a` not `char *a`...?