enormous refactor
 - more consistent function arguments, separating conversion from manipulation. Only make minimal necessary changes (e.g. zero-padding) when doing conversions.
 - split out tests and icd9 functions to 'explain', 'convert' and 'ranges' files.
 - many more tests clarifying behavior
 - invalidActions defines four options for response to invalid codes: default almost always to ignore bad values.