detail: move common.hpp to 'detail'

common.hpp and config.hpp are implementation details that should be
installed to target system.

common-pch.hpp is moved to 'impl'.

This commit also adds README.md to 'detail' and 'impl'
directories to explain their semantics.

refs #4782

Change-Id: I4f3e607338b3bdccbaddaed735f6326adcc2fda0
diff --git a/wscript b/wscript
index f5ec910..c0f0f18 100644
--- a/wscript
+++ b/wscript
@@ -139,7 +139,7 @@
     # config file will contain all defines that were added using conf.define('xxx'...)
     # Everything that was added directly to conf.env['DEFINES'] will not appear in the
     # config file and will be added using compiler directives in the command line.
-    conf.write_config_header('ndn-cxx/config.hpp', define_prefix='NDN_CXX_')
+    conf.write_config_header('ndn-cxx/detail/config.hpp', define_prefix='NDN_CXX_')
 
 def build(bld):
     version(bld)
@@ -173,7 +173,7 @@
                                        'ndn-cxx/**/*netlink*.cpp',
                                        'ndn-cxx/**/*-sqlite3.cpp']),
         features='pch',
-        headers='ndn-cxx/common-pch.hpp',
+        headers='ndn-cxx/impl/common-pch.hpp',
         use='ndn-cxx-mm-objects version BOOST OPENSSL SQLITE3 RT PTHREAD',
         includes='.',
         export_includes='.',
@@ -266,11 +266,10 @@
 
     bld.install_files(bld.env['INCLUDEDIR'], headers, relative_trick=True)
 
-    bld.install_files('%s/ndn-cxx' % bld.env['INCLUDEDIR'],
-                      bld.path.find_resource('ndn-cxx/config.hpp'))
-
-    bld.install_files('%s/ndn-cxx' % bld.env['INCLUDEDIR'],
-                      bld.path.find_resource('ndn-cxx/version.hpp'))
+    # Install generated headers
+    for filename in ['ndn-cxx/detail/config.hpp', 'ndn-cxx/version.hpp']:
+        bld.install_files('%s/%s' % (bld.env['INCLUDEDIR'], os.path.dirname(filename)),
+                          bld.path.find_resource(filename))
 
     bld.install_files('${SYSCONFDIR}/ndn', 'client.conf.sample')