Move Neovim types from C++ into binding generator

- Previously some of the Neovim types were typedefed in function.h
  but the introduction of ArrayOf() requires us to map Neovim types
  into native types at the generator - for consistency we now to all
  type handling at the generator
- The generator now keeps a mapping of Neovim types into native types
- All Neovim types defined in function.h were removed
- Updated bindings code
Improve error handling for function calls

- bindings now include one signal per function that can fail, named
  err_<function name>()
- The NeovimConnector::error() function was renamed as errorCause()
  it was causing some ambiguity when connecting lambdas to the error()
  signal
Add new unit test suite for encoding issues

- Added a quick test against the current behaviour for
  invalid encoding of QString
- Refactored test/CMakeLists.txt with a reusable function to
  avoid repetition