First checkin - not yet working

First checkin of unfinished playmusic application.  It creates a
database file of all audio files found (via 'locate'), but does not yet
play the (command-line-)specified file.
First working version - needs some cleanup.
In transition before changing 'for' to 'while' in main file

Cleaned up some debug/print code.  Began implementation of
option-processing logic.
'List files' options; cleanup; etc.

Some cleanup; added '-l' option (list files, don't play them) and '-L' option
(list files and then play them) and a bit of CL arg error processing.  The
file list is piped to a pager via popen so that the user won't have to
watch a long list scroll off the screen.

Also, a small bug fix: Enclose file names in double quotes instead of
single quotes so that a single quote in a file name won't cause an error -
although a double quote in a file name will still be a problem.
List files options; cleanup; etc.

New OptionState class for encapsulated CL arg processing, including:

added '-l' option (list files, don't play them) and -L option
(list files and then play them) and a bit of CL arg error processing.
Append-to/rebuild database logic, force, etc.

Added logic to, if the cache/database file exists and a command-line arg
matches no files, run 'locate' on that arg and append the result to the
database file (in case new audio files have been created after the
database file was created).  Included a bit of refactoring: moved the
logic to load the file-name arrays from the database file into a new
routine: load_in_memory_db.

Added -f option to force complete rebuilding of the cache/database file.
Changed 'require' to require_relative to allow ruby to find the needed
modules when playmusic is run from another directory.
Began work on metadata extraction functionality.

(Implementation not finished - saving before making changes.)
ExifInfoTool will use exiftool to extract metadata from a specified
audio file.  InfoTool (abstract parent) provides an interface for
getting and reporting the metadata.
Completed metadata extraction.

Finished basic implementation of metadata extraction (using exiftool).
Further enhancements may occur in the future.
Added -I (show info but don't play) option.
Changed -l/-L behavior - play/don't play.

Changed the CL interface and resulting behavior with respect to the -l,
-i, -L, -I options:  The uppercase ones (-L, -I) now both do not play
the matching files, while the lowercase ones (-l, -i) do both play the
files.
Minor abstraction-related improvement

Changed the name/string 'dbfile' to 'db' to promote the idea that the
db [dbfile] object is to be thought of as an abstract database, in
order, obviously, to allow implementation of this "database" via means
other than a text file in the future.
Added "edit database" (file) facility.

And did a small bit of cleanup...
Added (hard-coded for now) no-loop, no-repeat

Added --no-loop, --no-repeat options to vlc command.
Changes to conform to the ruby style guide

(Based on feedback from rubocop)
Odd file name fix, and a couple added contracts

ExifInfoTool: Added fix for file names with single or double quotes.  (Not
completely tested)

Added some pre/post conditions (using ruby_contracts) to methods in
InfoTool, DBFile.
Small rubocopy-related changes

Added '# encoding: utf-8' to make rubocop happy.
Other small changes to make rubocop happy.
Added some contracts; extraction_command fix.

Using the new ruby_contracts package, added some method pre- and
post-conditions.  exifinfotool.rb: Changed extraction_command to handle
path names with a single-quote.
Merge remote-tracking branch 'playmusic/master'

Merge existing "playmusic" repository (working ruby implementation) into new,
github-hosted "cl-music-player" repository.