Profiling support for msfconsole boot

Set METASPLOIT_FRAMEWORK_PROFILE=true in the environment.  Run
`./msfconsole -q -x exit`.  A pdf will be saved to
tmp/profiles/msfconsole/YYYYMMDDHHMMSS.pdf with the call graph with
numbers being in 100 samples per second.  The pdf is automatically
opened with `open`.
Remove fastlib

MSP-11368
MSP-11143

Remove fastlib as it slows down the code loading process.  From the
previous commit, the mean loading for
`METASPLOIT_FRAMEWORK_PROFILE=true msfconsole -q -x exit` was
27.9530±0.3485 seconds (N=10).  The mean after removal of fastlib
was 17.9820±0.6497 seconds (N=10).  This means an average 35.67%
reduction in boot time.
Use Rex::Compat.open_file to open profiling report

MSP-11368

Use Rex::Compat.open_file instead of `system('open <pdf>')` so that
opening the pdf works on Linux in addition to OSX.
Wrap Array#include? usage

MSP-11368

Wrap skipped.include? call to confirm it is the culprit for
Array#include? inside of with_connection in profile.
Optimize skip logic in #update_all_module_details

MSP-11368

Use `Hash<String, Set<String>>` instead of `Array<(String, String)>` so
that `include?` call is faster because (1) it's only search through
reference names of the same module_type and (2) `Set#include?` is faster
than `Array#include?`.  This change is a 8.20% average reduction in boot
time compare to b863978028f4414ec19f3b53d3498bf1a459974d, for a overall
reduction of 40.95% over b5c3c87790f08b2cb6b986fa4e22e8674e5ed153.
See statistics at
https://docs.google.com/spreadsheets/d/1TnZIUFIR1S5nCnkeM-7XR3AVSbyCl39x2mItJKJCOqg/edit?usp=sharing
and data at
https://drive.google.com/folderview?id=0Bx1hRHfpRW92VEFvQ2FaN3RoWWs&usp=drive_web
Merge branch 'master' into bug/MSP-11368/boot-profiling

MSP-11368
Merge branch 'pr/3845' into upstream