Merge branch 'hotfix/fix-for-method-resolution'
Merge pull request #41 from pcpratts/develop

fixing bug in coffi.ClassFile with DataInputStream.read
Update FullSensitiveNode.java

Fix: this pointer filter crashes if ignore-types=true.
Update HeapInsNode.java

Fix: This pointer filter failed when ignore-types=true
Update PtInsNode.java

Fix: this pointer filter failed when ignore-types=true
improved exception class to contain more information on what went wrong
Update ClassFile.java

InputStream.read() does not guarantee actually, well, reading anything:

http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#read(byte[])

The original code failed for me when reading from a `.jar` file, as InputStream.read() would cut out halfway and leave the rest of the `data` array as zeroes. This cause a NPE in `resolveFromClassFile`:

```
Exception in thread "main" java.lang.NullPointerException
	at soot.coffi.method_info.toName(method_info.java:86)
	at soot.coffi.Util.resolveFromClassFile(Util.java:225)
	at soot.CoffiClassSource.resolve(CoffiClassSource.java:39)
	at soot.coffi.Test$.loadClass(Test.scala:22)
	at soot.coffi.Test$.main(Test.scala:27)
	at soot.coffi.Test.main(Test.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
```

Wrapping it in a DataInputStream fixes that problem on my machine, and should have no affect otherwise
Fix for #59 as suggested by Tony Yan
Fix for issue reported by Haichen Shen:

Hi Eric,

I'm Haichen, a PhD student at University of Washington. Recently I've been using soot to do some static analysis on Android apps. I found that a recent commit by you caused some problem. The tag of commit is "Bugfix" (SHA1 ID: f1a3a38ac28b3aa29a8f4b8c376725861ed822b6).

The problem is that you put the writeOutput() from soot.Main.main(String[] args) into soot.PackManager.runPacks(). However, inside writeOutput(), it will call releaseBodies( reachableClasses() ) (Line 435) which deletes all the bodies. If I don't want to call the Main.main(args) but PackManager.v().runPacks() to make soot transform the code from java to jimple, and to make further use of jimple bodies, I will be no longer able to do that.

I'm not sure this issue would be a serious problem. And might there's another way to do this. If so, could you tell me? Otherwise, could you fix it? Thanks.

Best,
Haichen
Merge pull request #60 from malaverdiere/my-develop

Fix for #59 as suggested by Tony Yan. Thanks!
Merge pull request #58 from lihaoyi/patch-1

ClassFile.loadClass is buggy, will only read part of the file
added handling of class constants in constant evaluator
removed a debug method message printed out unconditionally which bloated stdout to several hundred MB for large Android apps
removed more internal debugging outputs bloating stdout
#1: removed another unconditional debug output bloating stdout
#2: cleaned a Java warning
Adding links to the jasmin and heros github projects.
extended the Jimple-based backwards icfg to be bidirectional
Merge pull request #67 from jbranchaud/master

Adding links to the README for the jasmin and heros repositories.
Adding links to the jasmin and heros github projects.
removed a too restricting "final" modifier at a method