The War on RippleAddress

**DO NOT MERGE THIS AT THIS TIME**

`RippleAddress` and its multiple personalities have been a thorn at our side. This is the first step in a long series of steps towards splitting it into single-responsibility classes.

Names are *temporary*: we can come up with something more appropriate and decide where these classes fit in the project hierarchy.

The code compiles and passes all unit tests. I am hoping for a thorough review, in case I missed (or borked) something. Comments or suggestions for improving this are, of course, welcome.