Octave: disable optimization of tests for faster compiles/less memory usage

- Filter out all but -g... and -W... flags from OCTAVE_CXXFLAGS
- Use AX_CHECK_COMPILE_FLAG() to check if -O0 is supported, if so
  add to end of OCTAVE_CXXFLAGS to ensure optimization is disabled
- Also run mkoctfile under "env -" to protect it from environment
- Also use more standard-compliant sed expressions
.travis.yml: reduce Octave make jobs to 3

- Allow for more memory per job to prevent gcc failures
- Disabling optimization should give enough speedup to compensate
Revert "Suppress Octave failing the build"

- This reverts commit fea2fc137e2a1db8601e6af922838a71cc47596e.
- Failures were probably due to gcc running out of memory
- Disabling optimization of Octave tests should both increase
  compile times and reduce memory usage, and reducing number
  of make jobs to 3 should also allow for more memory per job
DO-NOT-PUSH: remove .travis.yml
DO-NOT-PUSH: add Octave-specific .travis.yml
Examples/Makefile.in: allow C/C++ wrapper output file names to be overridden

- Caller can set ISRCS/ICXXSRCS to modify the C/C++ files names, so long as
  they still have .c/.cxx extensions
- IOBJS now derives from ISRCS, new ICXXOBJS is used when compiling C++ code
Lib/typemaps/string.swg: make SWIG_strnlen() an internal function
Add 'decl' field to Wrapper() object

- So that wrappers can carry around an independent declaration of a
  wrapper function/variable, in addition to the definition code
- Add function Wrapper_print_decl() for printing the declaration
Extend SwigType_emit_type_table() to change modified, print only declarations

- SwigType_emit_type_table_decl() also print declarations of all type table
  variables to a 3rd file, which also removes 'static' as the storage class
- SwigType_emit_type_table() retains the previous default behaviour