Build: Generalize NS build steps for various toolchains

Various toolchains have different behaviours and requirements in CMake
implementation.
Generalize several steps in build sequence in NS build example, to
conceal differences between various toolchains.

 - Define a tfm_toolchain_reload_compiler() in NS toolchain file example
   to enable Armclang to setup compiler flags after project().
   Add a dummy one in GNU toolchain file.
 - Wrap the binary generation in NS toolchain file example as toolchains
   require different implementation.
 - Move the code of some build steps to tf-m-tests from TF-M NS build
   example. NS target names are hard-coded in those steps. TF-M shall
   remove those code to avoid coupling NS and S implementation.

Change-Id: Ib787f3b24e9a6623b8384aa00551cd7abc0f74ff
Signed-off-by: David Hu <david.hu@arm.com>
diff --git a/toolchain_GNUARM.cmake b/toolchain_GNUARM.cmake
index 2e81909..c65734e 100644
--- a/toolchain_GNUARM.cmake
+++ b/toolchain_GNUARM.cmake
@@ -364,3 +364,7 @@
         ARGS $<TARGET_FILE:${dependency}> --wildcard ${SYMBOL_LIST} $<TARGET_FILE:${dependency}>
     )
 endmacro()
+
+# A dummy macro to align with Armclang workaround
+macro(tfm_toolchain_reload_compiler)
+endmacro()