Ignore .swp and .pyc
Move CLI logic to main() func called from __main__

Move CLI logic out of module top level and into a main()
function. Guard this function call in an if __name__ ==
'__main__' block. Consume sys.argv and return a zero exit
status on success.
Read input and output filename from command line

Use argparse to read optional input and output filenames
from the command line. Default to read from STDIN, allowing
for easy command line piping, e.g. from arecord, rather
than having to alter the command and arguments passed to
a subprocess.Popen call.

Note that because a file read from disk might end before
we get a Ctrl-C, we also have to check for this in the read
loop, raise EOFError when we see it, and catch it alongside
KeyboardInterrupt to trigger flushing the write buffer out
to disk.

Move the `arecord` piped command output behavior from the
InputSink class to the argparse section of the main() func.
This lets us simply pass a file object, whether it reads from
an actual file on disk, stdin, or the output of arecord.

The --arecord option overrides the --input_filename option.

n.b. the arecord stuff is untested, since I'm on a Mac.
Remove SinkInput class in favor of Wave_read obj

Strip out the SinkInput class, since all it is a thin
wrapper around the metadata provided by Python's standard
wave.Wave_read class. Modify references to input file
metadata to use the Wave_read getters directly.

N.B. The frame to sample functions still reference the
global INPUT_SRC values for some Wave file parameters.
This must be fixed for proper wave-file-based metadata
support.
Switch all debugging `print`s to logging.debug

Load and use the standard logging module so debugging
statements are controllable and got to STDERR rather than
STDOUT by default.
Move silence removal logic to separate function

Break the silence removal code out of the main()
function to separate the CLI user interface from
the application logic.
Add CLI options to set SILENCE_MIN and SILENCE_MAX

Permit setting the SILENCE_MIN and SILENCE_MAX values
from the command line.

Retains the use of global vars for these params, but
adds a context manager to enable clean temporary
overrides, as from the CLI via argparse.
Runtime handling of wave endianness and signedness

Remove use of INPUT_SRC hardcoded global config for explicitly
setting endianness and signedness of input date.

Instead, follow the wave standard (always little endian, unsigned
for 8 bit waves, signed for higher bit depths), but permit explicit
overrides. Overrides are currently implemented via globals vars.

Add context managers to safely set and unset these global vars.

Add a function to implement the Wave format bit depth => signedness
rule, referencing the INPUT_SIGNEDNESS global var to check for
overrides.

Add CLI opts, using these context managers, to allows overriding
wave format options from the command line.

Fix bug where frame to sample functions used hardcoded sample width
and number of channel metadata. Pass a reference to the input wave
file reader to these functions so they can read this metadata correctly.
Add my author info to the license header
Expand README docs and convert to ReStructuredText

Add basic command line documentation to README file.

Convert to ReStrucutredText for eventual PyPi compatibility, and
rename the README file to README.rst for automatic Github RsT
processing.
Change remove_silences to take file not filename

Pass in file object for writing output rather than filename.
Lets us more flexibly use remove_silences from code. Caller code
is responsible for closing the output file object.
Remove arecord and all INPUT global dict use

Since we're now reading input from either a command line specified
file (or a Python file object, if calling from code), or the STDIN,
drop the use of the INPUT global dict for specifying input params.

With no input configs hardcoded, there's no reason to call arecord
via a subprocess, since we don't have configs to pass it anyway, and
it's just as easy to call it from the shell and pipe its output
into SNARP's STDIN.

Note that the previous "default" and "podcaster" input configurations
are memorialized in the README.rst documentation file as piped
UNIX shell commands, as well as in two shell scripts in the new scripts/
directory.
Add Nose unit test for basic functionality

Tests shoud be run with the `nosetests` command. You can install
nose with:

    pip install nose

Test SNARP's logic on generated input audio files and ensure that the
number of frames removed by SNARP remains the same.  Algorithm changes
will need to have corresponding changes made to this test, as the exact
number of frames removed can't be expected to remain consistent.

The test input files consist of two beeps, a pause, then another
beep. The input files should change from about 5 s to about 3 s.
The test input is generated, not recorded, so contains pure silence
aside from the beeps.

All four test input files are derived from the same source, and vary only
in their frame rate and bit depth, checking SNARP's handling of input
wave file metadata. Note that per the wave spec, the 16 bit files contain
signed samples while the 8 bit files contain unsigned samples.
Add Makefile with basic convenience targets

- Generate HTML from RsT using pandoc.
- Delete generated HTML and .pyc files from clean target.
- Test with nosetests
Remove subprocess import.