Rewrote multiprocessing parts to only require one database connection

List of changes in detail:
- `fingerprint_directory`:
	Now uses `multiprocessing.Pool.imap` and updates database in callers
	process.
- ` fingerprint_file`:
	Now uses `_fingerprint_worker` internally.
- `_fingerprint_worker`:
	1. Some slight changes to argument handling due to `imap`
	usage.
	2. Changed to return (song_name, hashes) where hashes is
	a set of hashes from all channels.
- `path_to_songname`:
	Changed to use `os.path.splitext`, this caused files with
	a period in their name to return the wrong name.

These changes should remove some of the blocks @pguridi had while implementing the SQLAlchemy backend.