Week3 part2

Including:

- Assignment 14: Use macros and shared examples in tests
- Assignment 19: Implement the first feature spec
- Assignment 20: A more complicated feature spec