nci: re-add nohup to the external viewers

This is *actually* needed to keep the processes running if the main
thread is killed.
add GPL-3 license files
doc: write tags only during sync()

This is to keep a tighter coupling between the
db and the file system.
doc: load bibentry only once, as needed
doc: rename _index_bibentry() to be a little more accurate
doc: write bibfile only during sync()
doc: write file only during sync()
update TODO
cli: no longer need to purge doc during import

all files now written to docdir once at sync()
test: comment tweaks in basic test
test: add test for purged docdir after deletion
db: register prefixes for available sources

This only registers sources from known source modules.
This creates a dependency on source modules at search time,
which is unfortunate.  We may be able to elliminate this
dependency if we just parse existing source terms in the db.
test: add test for searching by source.
update TODO
source: add SourceError exception class.
source: add prototype for Source class
source: cleanup main methods

This cleans up quite a bit, removing cruft, simplifying
things, and using proper exceptions.

Source modules will need to be updated with new prototypes.
source: clean up source modules for new prototype.
source: add new parse_and_fetch() convenience method for use in CLI.
cli: use new parse_and_fetch