Fixed everything. Still need to test polymorphism and decide how to
arrange arrays? Also adding an example .java file that shows the
different capabilities of the static analyzer.

Note that we can drastically optimize to code in two places:

1.) We do not need a mutex in putfield and getfield anymore, same with
newObject and newArray in GC.java, because we never garbage collect
concurrently. GC for us happens at the end of tick for every
clock-domain by setting the pointer to the start of the heap space.

2.) We are using 9 words for object handles, we only need 2 words,
things don't work without the 9 word handle, so we need to reduce this 9
word handle to 2 words. I think the problem is in putfield and getfield
most likely.
added a representative example java file that can be seriously optimized