Merge pull request #5 from Brinsky/master

General Compiler Interface Improvements
Fixed method override and implement issues that were preventing the
correct method in a primitive type from being chosen for interface
implementation.

This bug was, among other things, preventing LinkedList methods like
remove() from working for LinkedLists of primitive types, since the
wrong equal() method was being used for the CanEqual interface.
Fixed tiny error in XML configuration schema.
Added custom link command support to the config file.

For example, the following is an example of a standard config file for
Windows with the standard link command explicitly given. 
					
<?xml version="1.0" encoding="UTF-8"?>
<shadow arch="32" os="Windows">
  <system>.</system>
  <import>.</import>
  <link>gcc -x assembler -</link>
</shadow>
Fixed the way that configuration files are found and used, searching
using the following order of precedence:

1) The configuration file specified on the command line invocation of
the compiler
2) A file with the appropriate default name for the system (usually
shadow-linux-64.xml or shadow-windows-32.xml) in the directory
containing the first .shadow file to be compiled
3) A file named shadow.xml in the directory containing the first .shadow
file to be compiled
4) A file specified by the SHADOW_CONFIG environment varible
5) A file with the appropriate default name for the system in the
directory where shadowc is located
6) A file named shadow.xml in the directory where shadowc is located

Once a configuration file has been found, the system import and imports
specified by it are relative to the location of the configuration file,
unless they are absolute paths.
Updated usage message to be more descriptive.

Changed command line errors to print help message when there is a 
configuration error.
Added Apache license to Shadow compiler.
Tagged release as 0.5 for consistency with website. Fixed a minor mistake in a config file and made .gitignore apply to all .out files.