Protocols

**DO NOT MERGE YET**

I'm still working on this, but I didn't want you to panic and think it wasn't started.

@bridgethillyer -- I need feedback on a few things. I'd like this section to show multiple ways to do polymorphism in Clojure, so I'd implement `calculate-rent` as a multimethod and as a plain function with control flow. Does that sound OK by you?

If so, could we move control flow between functions and protocols?