Implement new hashtag parsing for multiple citations.

This PR does two things:

- Separate the hashtag parsing function from interactions with the database, so that the semantics for SPnetwork post citations and topics can be defined and tested using only strings.
- Implement the above-mentioned semantic parsing. These semantics follow my understanding of what has been decided by the developers so far.  Specifically:
  - Each post must contain the #spnetwork hashtag.  The first paper referenced after the post is considered the primary reference.
  - Each citationType or topic begins with a hash '#'
  - Only one citationType can be applied to each reference in a given post
  - The citationType for each reference must appear in the same line as the reference
  - If there are multiple citationTypes and/or multiple references in a line, the first citationType will be applied to all of them

This also updates the relevant tests, without changing their meaning -- it just calls the new parsing function.  All tests pass for me.

This is meant to replace most of https://github.com/cjlee112/spnet/pull/99, while sticking to a minimum set of changes that should be easier to review.  It does not modify the regex strings used to match DOIs.