java: generate inheritance information in prolog format

Summary:
Now that we can parse the .java and .class files in fb4a, and that we have
the call graph, inheritance tree, and data graph (without any errors),
we can start generate prolog facts about the codebase to make it easy
to write certain analysis. With this patch one can easily get
the list of parents, recursively, or children, of a class.

The next patches will encode the call graph in a similar format,
as well as the data graph, which will then make it easy to ask questions
such as: is there any method calling startActivity inside a class
that derives from Fragment.

Test Plan:
unit test included
$ cd pfff
$ make
$ make test

Reviewers: pieter

Reviewed By: pieter

CC: bill, herrys, platform-diffs@lists

Differential Revision: https://phabricator.fb.com/D674744

Task ID: 1779304
java: generate call graph information in prolog format

Summary:
This patch makes accessible the call graph in prolog.

It's based on the bytecode (.class files), which is typed, which makes it
trivial to resolve complex method chain calls (no need
for type inference, which is needed for analyzing recent .java files).

Note that the call graph is nevertheless imprecise as
a call to a method (Foo,bar) can in reality be a call
to a derived class of Foo. To be more precise requires
global analysis, such as RTA, XTA, context sensitive interprocedural
analysis, object sensitive interprocedural analysis, etc.

RTA is relativly easy to implement, so I'll probably do that next,
(if it's actually needed by some of our bug analysis).

Test Plan:
unit tests included
$ make tests

Reviewers: pieter

Reviewed By: pieter

CC: bill, herrys, sidd, platform-diffs@lists

Differential Revision: https://phabricator.fb.com/D674816

Task ID: 1779304
java: generate use (fields) graph information in prolog format

Summary:
This patch makes it easy to check who is using a certain field.
After this, we will have access to the inheritance tree, call graph,
and data graph from prolog and we will be able to combine all those
information to perform complex query on the fb4a codebase.

Test Plan:
unit test included
$ make test

Reviewers: pieter

Reviewed By: pieter

CC: herrys, platform-diffs@lists

Differential Revision: https://phabricator.fb.com/D674860

Task ID: 1779304