dissect: improve dissect program

This commit improves ndn-dissect program as follows:

* Functions are organized into NdnDissect class.
* The class is placed into namespace ndn::dissect.
* The main function is moved to main.cpp.
* Indentation is provided by ndn::util::IndentedStream.
* Command line parsing uses Boost.Program_options.
* -h and -V command line options are supported.

refs #2848

Change-Id: Ib12584f455910128662ed3f59631d13db52a2cf8
diff --git a/tools/dissect/wscript b/tools/dissect/wscript
index 748a292..070ece2 100644
--- a/tools/dissect/wscript
+++ b/tools/dissect/wscript
@@ -2,9 +2,16 @@
 top = '../..'
 
 def build(bld):
-    bld.program(
-        features='cxx',
-        target='../../bin/ndn-dissect',
-        source='ndn-dissect.cpp',
+    bld(features='cxx',
+        name='dissect-objects',
+        source=bld.path.ant_glob('*.cpp', excl='main.cpp'),
+        includes='.',
+        export_includes='.',
         use='core-objects',
         )
+
+    bld(features='cxx cxxprogram',
+        target='../../bin/ndn-dissect',
+        source='main.cpp',
+        use='dissect-objects',
+        )