(Support) Added Option and Map classes

The Option template class represents either a value or lack of a value.
Its name and members come from ideas in Scala.

The Map class inherits from std::map, has all the same constructors
and methods, but adds a couple of convenient things:

  A get() method that does a lookup and returns an Option containing
  either the value that was found, or lack of a value.  Unlike
  std::map<>::operator[], this method does not add a new default
  constructed value to the map.

  A getOne() method like get() except it returns a value or throws
  an exception.

  A getOrElse() method that returns a value or a specified default
  but does not create a new value in the map.

  An exists() method that's an easier way to check whether a key
  exists in a map.
(Binary Analysis) Easier ways to create mappings from address to instruction

Copied the Disassembler::InstructionMap type to the global name space because
its used all over the place and isn't specific to disassembly.

Changed InstructionMap from using std::map to using Map so that it has
a more convenient interface.  Map is backward compatible with std::map,
so nothing else had to change.

Added SgAsmInterpretation::insert_instructions(), erase_instructions(), and
get_instruction_map().  These adjust an existing InstructionMap or return a
new one.
(Binary Analysis) API changes for binary control flow graphs

* Renamed BinaryAnalysis::ControlFlow::Graph to
  BinaryAnalysis::ControlFlow::BlockGraph, but kept the old
  name as an alias.

* Added BinaryAnalysis::ControlFlow::InsnGraph as a Boost graph
  for representing CFGs whose vertices are instructions.

* Changed the VertexFilter and EdgeFilter APIs so they can work
  for both BlockGraph and InsnGraph.  Namely, their SgAsmBlock
  arguments were changed to SgNode.

* Changed build_cfg_from_ast() to build_block_cfg_from_ast() and
  added instruction-based counterparts: build_insn_cfg_from_ast()

* Added explode_blocks() to convert a basic block CFG into an
  equivalent instruction-based AST.

* Added fixup_fcall_fret() to adjust edges of instruction-based
  CFGs at call sites and return sites: function call sites don't
  have an edge to the fall through address; function return sites
  have new edges that point back to the fall-through instruction
  for all their call sites.

* Added BinaryAnalysis::ControlFlow::write_graphviz() that is
  similar to the Boost version of that function, but which
  organizes a CFG into cluster subgraphs, one cluster per function.

* Added get_ast_node() and put_ast_node() template functions that
  should be used instead of boost::get() and boost::put() since it
  hides an implementation detail about which property is used to
  store the node pointers.
(Binary Analysis) Updated code to use new binary CFG API

Most of these changes simply replaced build_cfg_from_ast() with
build_block_cfg_from_ast().  A couple places needed to change
vertex filters to use SgNode rather than SgAsmBlock.
(Binary Analysis) Added test cases for instruction-based CFGs