Remove noexcept(false) specification from assert messages in identity

  The noexcept(false) specification, while useful, doesn't really help
  in this situation, as every single `assert_*` function *may* throw,
  even if the compiler thinks that they evaluate to noexcept(true) each
  time. Perhaps if it is absolutely needed, noexcept(false) may be added
  back to these functions, but this can be saved for a v2 release.
Fix configuration check in CMakeLists.txt where -Wall was not being added

Add -Wnoexcept if th compiler supports it.
Fix warnings generated by G++ (-Wreorder warning)