Changes for flow message processing optimizations in collector:

1. Rewrite FlowTableInsert to traverse the flow message XML
  tree only once and extract the needed fields into an
  array. Use the array to populate the vectors needed to
  populate the FlowRecordTable and the flow index tables.
2. Use the DbDataValueType type to encode the value into
  string rather than using the column family name to determine
  the type. This avoid 2 map lookups per field encoded.
  Add a boost::blank as the first element of DbDataValueType
  variant instead of std::string to determine if the variant
  is populated or not.
3. Add a mock_generator in C++ which sends flow messages and
  can be used to scale test vizd.
4. Use pugixml to decode the SandeshHeader and the sandesh
  message in SandeshServer. Abstract out SandeshMessage
  creation and parsing using SandeshMessageBuilder, change
  vizd to use SandeshMessage.

With the above changes, we are able to increase vizd flow sandesh message
receive performance for 1 generator from around 1.5K msg/sec to
around 3.5K msg/sec using vizd built using compiler optimizations enabled -03
on single box setup - a6s23 - 4 core i3.