preliminary support for module name resolution in Flow

Summary:
(Changes: addressed comments by cristianoc and pad)

This diff computes module signatures for JS files under www. The model
is not complete: some important patterns, such as React, are not currently
understood. However, the tool does a fairly good job of tracking exported
classes, functions, and objects, and whatever they extend via standard idioms
such as inheritance, prototypes, and mixins.

The goal is to enable resolution of cross-module references, so that any
type inference downstream can focus on local module analysis.

Test Plan:
This diff builds on top of pfff. (See the internal wiki to setup pfff,
and then patch this diff over it.)

Run make to compile. Then make sure the environment variable STATS_JS_PREFIX
points to your local www directory in the stats_js script file, and run

./stats_js html/js

from the pfff directory to analyze all js files in the html/js subdirectory
of STATS_JS_PREFIX.

This will output a bunch of statistics on those files, and end with a prompt
on which you can type in the name of any JS module, and the tool will output
the inferred signature for the module's exports.

Search for print statements in

lang_js/analyze/stats_js.ml

to understand what the output statistics mean.

All analysis information is stored in marshaled form in shared memory,
so re-running the command will simply read back that information from the
shared memory (and thus be must faster). To re-analyze the files, run

rm /dev/shm/js*.db

before re-running the above command.

To ignore files from the analysis, add their paths relative to STATS_JS_PREFIX
in lang_js/analyze/stats_js.ignore (this file is prepopulated with a bunch of
files that the tool cannot analyze currently).
All paths that contain benchmarks__, mocks__, and tests__ are automatically
ignored.

Reviewers: jeffmo, pad

CC: bryano

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

Task ID: 3058370