Refactored {SrcDiv,Sent,Token}.citation to handle nil citation_parts.

This extracts (most) code related to generating human-readable citations
for SourceDivision, Sentence and Token in a separate module, and makes
the generating procedure more flexible so that it handles nil and
empty-string valued tokens.citation_part attributes. Blank citation_part
attributes were possible before, but empty-string and nil values were
not handled in the same way and would generate citations with extraneous
whitespace at the end. For future proofing, this change additionally
adds support for sentences and even source divisions without any tokens
with citiation_part set to a non-blank value, as well as graceful
degradation if blank citation_part attributes are interspersed with
non-blank ones.
Bumped version number to 1.2.1.