Merge pull request #1 from Brinsky/master

Added missing bracket to Linux.ll
Added support for "is" operator, which checks to see if objects are
subtypes of classes.

Its functionality is similar to the "instanceof" keyword in Java.
Merge pull request #2 from Brinsky/master

Fixing issues in shadow.test.ouput.OutputTest
Fixes to unit tests so that they pass.
Merge branch 'master' of https://github.com/TeamShadow/shadow.git
Added support for unsafe cast checking.

Unfortunately, it breaks the compiler.  I'm committing only to get this
onto my work computer (despite how bad of a habit that is).
Fixed casting issues.

Some concerns remain about strange casts with primitives:

boolean b = true;
Object o = b;
int x = cast<int>(o);
Small additions to casting test cases and handling.

An additional check should be adding when casting from a Array<T> to a
T[], because the number of dimensions may not be consistent.
Changed language syntax to separate packages with colons (:) instead of
periods (.), since it is more consistent with the idea of a colon as a
scope modifier.

Updated test cases to match this syntax.  Removed "hello" tests since
they aren't reflective of the state of the language
Removed old junk to prepare for the upcoming release.
Merge branch 'master' of https://github.com/TeamShadow/shadow.git
Removed error and view keywords from the compiler for upcoming release.

It's likely that error doesn't have a lot of good use cases, and it's
not clear how views will work at this point.

Added full support and test cases for the assert keyword.

Also, changed singleton classes to allow them to inherit from a regular
class (other than Object).  Not sure if that's a good idea.
Small changes to fix round() method for double and float.  Updated
tests.

Trying to get Sokoban example program to compile, but it has revealed
some problems with interfaces.  Treating an ArrayList as a List seems
either not to compile or to produce broken code.
Fixed issue with create return types in MethodRef having the correct
generic type parameter.

There is still an issue with the ArrayList<String> data values.  It
might be an artifact of array reference checking, or it could be a
legitimate problem.
Changed ordering of interfaces so that it is uniform among different
generic versions of a type.  This is key so that they refer to the
correct sets of methods.

Small updates to typechecking of generic interfaces in method arguments,
but there are still issues.
Fixes for TAC generation for methods that return types with type
parameters.

Improved (but perhaps slower) type checking resolving the dependencies
between between methods with generic types and the types themselves.

Small LLVM generation fixes.

Updated utility library classes.
Significant changes to how typechecking of generic types are done.
There is now an intermediate step where only extends and implements are
instantiated.

Other updates were made to how method parameters are added.  They're now
based on the method type, not the formal parameters from the AST.

Although this typechecking approach seems more powerful, several pieces
of functionality were broken along the way.  Exceptions and interfaces
are problematic.
Fixed problem with catch blocks caused by previous commit.
Fixed object to interface casting issue.

Added sokoban solver to ignore list.
Changed the application of readonly and immutable:

References can be either readonly or immutable (but not both).  

Methods can be readonly (and are automatically made readonly if the
class they're in is immutable).

Classes can be immutable but not readonly.