Initial working version

This initial version take a very naive approach to determining whether
functions or methods were called. We instantiate an instance of
UsageAnalyzer which is a subclass of NodeVisitor, then we keep track
of all of the FunctionDef and Call nodes. We store their names and
then do a set difference of definitions minus calls. Whatever is left
over is 'dead' code in the eyes of this script.

Current Limitations
-------------------
Currently if two functions have the same name in different namespaces
and a call is made to one of the functions in either namespace then
both functions are considered to be used. We need to add more robust
analysis of scoping to this script in order to handle this
problem. Also, magic methods are currently marked as being unused as
well, although this is rarely interesting. When I did analysis of
framework code many functions which were used by the framework were
marked as being unused, it would probably be helpful to add directory,
filename and test regex filters to allow the user to configure this
behavior.