Add Missouri Hub profile (#7617)

- 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.
  Unlike OAIMODSMapper, we assign spatial.name with the value in
  spatial.continent if there are no other fields.