Initial skeleton of new Broxygen infrastructure.

Doesn't generate any docs, but it's hooked in to all places needed to
gather the necessary stuff w/ significantly less coupling than before.

The gathering now always occurs unconditionally to make documentation
available at runtime and a command line switch (-X) only toggles whether
to output docs to disk (reST format).

Should also improve the treatment of type name aliasing which wasn't a
big problem in practice before, but I think it's more correct now:
there's now a distinct BroType for each alias, but extensible types
(record/enum) will automatically update the types for aliases on redef.

Other misc refactoring of note:

    - Removed a redundant/unused way of declaring event types.

    - Changed type serialization format/process to preserve type name
      information and remove compatibility code (since broccoli will
      have be updated anyway).
Merge branch 'master' into topic/jsiwek/broxygen
Refactor search_for_file() util function.

It was getting too bloated and allocated memory in ways that were
difficult to understand how to manage.  Separated out primarily in to
new find_file() and open_file()/open_package() functions.

Also renamed other util functions for path-related things.
Merge branch 'master' into topic/jsiwek/broxygen
Flesh out Broxygen doc-gathering skeleton.
Merge branch 'master' into topic/jsiwek/broxygen
Quick optimization to Broxygen doc gathering.

So script parsing is only ~2x slower rather than 20x.  Turns out cloning
Vals is particularly slow.  Changed to just get a string description of
the Val for initial value and redef tracking.
Add BIF interface for retrieving comments/docs.

The new BIFs:
    - get_identifier_comments
    - get_script_comments
    - get_package_readme
    - get_record_field_comments
Merge branch 'master' into topic/jsiwek/broxygen

Conflicts:
	testing/btest/Baseline/coverage.bare-load-baseline/canonified_loaded_scripts.log
	testing/btest/Baseline/coverage.default-load-baseline/canonified_loaded_scripts.log
Merge branch 'master' into topic/jsiwek/broxygen
Replace safe_basename/safe_dirname w/ SafeBasename/SafeDirname.

So errors can be better handled.
Remove unneeded Broxygen comments in scan.bro.

They just duplicated the text from where the events are originally
declared and also it's not generally useful to Broxygen-style comment
event *handlers* (they're more of an implementation detail of a script,
not a user-facing element).
Broxygen can now read a config file specifying particular targets.

Though nothing currently gets built as most dependency/outdated
checks and doc-generation methods are still skeleton code.
Fix the irc_reply event for several server message types.
Implement majority of Broxygen features delegated to Bro.

Still have to update the Sphinx integration.
Updating submodule(s).

 [nomail]
Update local.bro for Bro 2.2

Removed some commented-out code that no longer works in Bro 2.2 (because
Notice::policy is now a hook).
Merge remote-tracking branch 'origin/fastpath'

* origin/fastpath:
  Update local.bro for Bro 2.2

Adding to BIT-1095.
Updating submodule(s).

 [nomail]
Integrate new Broxygen functionality into Sphinx.

Add a "broxygen" domain Sphinx extension w/ directives to allow
on-the-fly documentation to be generated w/ Bro and included in files.

This means all autogenerated reST docs are now done by Bro.  The odd
CMake/Python glue scipts which used to generate some portions are now
gone.  Bro and the Sphinx extension handle checking for outdated docs
themselves.

Parallel builds of `make doc` target should now work (mostly because
I don't think there's any tasks that can be done in parallel anymore).

Overall, this seems to simplify things and make the Broxygen-generated
portions of the documentation visible/traceable from the main Sphinx
source tree.  The one odd thing still is that per-script documentation
is rsync'd in to a shadow copy of the Sphinx source tree within the
build dir.  This is less elegant than using the new broxygen extension
to make per-script docs, but rsync is faster and simpler.  Simpler as in
less code because it seems like, in the best case, I'd need to write a
custom Sphinx Builder to be able to get that to even work.