Debugger: Extend FunctionDebugInfo interface.

- Add hook to FunctionDebugInfo to determine if the represented function
is the main function of the program. Adjust
{Basic,Dwarf}FunctionDebugInfo accordingly.

- {Team,Image}DebugInfo: When loading, see if the current image contains
the main function. If so, cache it for later retrieval.
Fix incorrect handling of DW_FORM_flag_present.

This form implicitly indicates a flag value of true without a
corresponding byte in the datastream. As such, we were introducing off
by one errors when parsing one.
Implement support for DW_FORM_sec_offset.

This form denotes references to other debug sections, and is sized based
on whether the 32 or 64-bit DWARF format is used.
Update attribute classes to match DWARF 4.
Add DIETypeUnit.

Represents a top level unit from DWARF 4's .debug_types section, akin
to a compilation unit.
Add TypeUnit and refactor.

- Pull common base class BaseUnit out of CompilationUnit and adjust the
latter to inherit.
- Add TypeUnit to represent the top level units for .debug_types.
DwarfFile: Implement handling of .debug_types section.

- Refactor ExpressionEvaluationContext::GetCallTarget() and
DwarfFile::_ResolveReference() to use an enum value for the type of
reference being passed in, as we now need to support signature
references in addition to local/global. Adjust callers.
- Factor out an _ParseDebugInfoSection() and add a corresponding
_ParseTypesSection() for the top level loops that handle .debug_info and
.debug_types respectively.
- Refactor _ParseDebugInfoEntry(), _ParseEntryAttributes() and
_ResolveReference to take a pointer to the relevant BaseUnit in order
to allow sharing between parsing of the types and info sections.
- Implement support for DW_FORM_ref_sig8. In order to handle this, we
use a hash table that maps from the corresponding 64-bit DW_AT_signature
values to their respective type units.
- Adjust debug output to more closely match offsets and values used by
objdump for ease of troubleshooting parsing issues.

Combined, these changes allow us to load DWARF 4 binaries sufficiently
to get source information and unwind call frame, though support is still
incomplete. In particular, global references aren't yet implemented,
and neither are location expression attributes, which are now used
quite heavily, and consequently we can't yet resolve variable values
and a few other things properly.