Make Dep a properly abstract type.

Summary: * Created an mli for Typing_deps
* Made Typing_deps.Dep.t an abstract type, instead of int
* Replaced various uses of ISet by DepSet (ISet is a set of Ident.t,
  not ints... though it so happens that Ident.t = int. But it seems
  inappropriate to store a Dep.t in a set of Ident.t)
* Created Typing_deps.(un)marshal, so we don't expose ifiles

Reviewed By: @jwatzman

Differential Revision: D1738913

Signature: t1:1738913:1418676595:d745988e8699baf05274f7a13035fff7ebb25d52
Remove dead code.

Reviewed By: @jwatzman

Differential Revision: D1738947

Signature: t1:1738947:1418676801:435f8c422dfd923e5ee1b5a7948eda01b69da0a0
Make subst an abstract type.

Summary: This also revealed some code duplication, yay!

Reviewed By: @jwatzman

Differential Revision: D1739103

Signature: t1:1739103:1418678734:6416828a85aa4fd60756b5f9f6bece808e1cf2e5
Print out total startup time.

Summary: Incremental mode logging does the same thing.

Reviewed By: @jwatzman, @elgenie

Differential Revision: D1739379

Signature: t1:1739379:1418682187:5dc050f4b5b0c73a6e4685583f878deb14ec7f0b
Add mli for typing_env.ml

Summary: This makes `genv` an abstract type. Unfortunately, the other types
are coupled quite intimately with other modules, so they have not
been made abstract.

Doing this also revealed a bunch of unused function parameters,
which I removed.

Reviewed By: @jwatzman

Differential Revision: D1739171

Signature: t1:1739171:1418678439:a92eec712add02be116daa1dea394ce948df8605
Avoid passing around env unnecessarily.

Summary: `add_wclass` does not modify env per se; it modifies the shared
memory dependency table, which is global. Hence there is no need to
return env from `add_wclass` (and its callers).

Reviewed By: @jwatzman

Differential Revision: D1739169

Signature: t1:1739169:1418678686:930af180179b93c9c2de73e01a7d0cdda58b9577
Disable fewer warnings for typing/

Summary: This is still a work-in-progress: I was originally going to
disable almost all the warnings, but there seems to be a bunch of unused
code of possible value (e.g. CompareTypes) that I'm not 100% sure that I
should delete. Will ask@pikatchu on Monday. But the work thus far is
worth committing.

Reviewed By: @jwatzman

Differential Revision: D1739224

Signature: t1:1739224:1418678840:66580352d133a9a27910a24569b350d3c4e0ea47
Enable unused code warning in dfind/

Summary: So much dead code!

Reviewed By: @jwatzman

Differential Revision: D1739226

Signature: t1:1739226:1418678865:fe3f30fd309ff546bc9b2f8ba3778c3b474a102c
Enable unused code warning for server/

Reviewed By: @jwatzman

Differential Revision: D1739227

Signature: t1:1739227:1418678937:9fa2ae026b8b848ce7237140d4b9ce6c129ff502
Warn on unused values under heap/

Summary: This involved making the CacheType module signature actually
used, instead of just being there as documentation.

Unfortunately, I had to remove `Old.find_unsafe`. While OCaml is correct
that it is unused, doing this breaks uniformity with the interface
exposed by `module New`... but I think it's worth it so that we can get
warnings for the relevant cases of dead code.

Reviewed By: @elgenie

Differential Revision: D1739228

Signature: t1:1739228:1418681926:55aed4b4fbee2783cc8e07c847994923cabbd74d
Enable warnings for dead code in the JS target.

Reviewed By: @jwatzman

Differential Revision: D1739229

Signature: t1:1739229:1418682047:587b2b2ce9db7e83235af869d71bee9140a9f0ac
Reduce dependencies on ParserHeap.

Summary: The goal is to allow us to discard parsing data after our types
are declared, so we can reduce the size of the saved state. To this end,
things that depend on the ParserHeap should be switched to use
files_info wherever possible.

Reviewed By: @jwatzman

Differential Revision: D1739737

Signature: t1:1739737:1418683152:9388580dbef61b2aac5cc601cfc4db67deb0760b