Add Missouri Hub profile

- Add MissouriMapper and related tests
- Add lib/textnode.py
- Add `spectype' module with list of valid types.

Notes:
- Subject strings are split on semicolons in
  MissouriMapper.map_subject().  Splitting is done with the `shred'
  pipeline module in some other profiles.
- MissouriMapper overrides the title mapping performed in
  OAIMODSMapper.
  See https://issues.dp.la/issues/7617#note-19, item 4.
  OAIModsMapper was designed to treat various attributes not relevant
  to Missouri and appears designed to take the last title element it
  encounters.
- Titles and descriptions are assigned as lists.
- As with OAIMODSMapper's treatment of spatial data, we filter out
  hierarchicalGeographic properties that are not in the allowed list.
  We do, however, allow `continent', unlike in OAIMODSMapper.
I like this solution, but I'm curious why you didn't hand this off to the `shred` enrichment.