Turn off -Werror by default.

It inteferes with development activities by breaking your build in the
middle of a refactor.  Instead, let's enable -Werror on the Travis CI
builds via a TRAVIS_CI_BUILD option.
Refactor: Redefine `Map(T)` as a more generic `Map(T, U)` macro

To replace `Map(T)`, a new macro `PMap(T)` was defined as `Map(T, ptr_t)` for
writing maps that store pointers with less boilerplate
Merge branch 'generic-key-value-map'
Make it easier to change CMAKE_BUILD_TYPE in your local.mk.
Initialize Object, Position

fix #778
thanks @genisaguilar
Merge #782 'Initialize Object, Position'
travis/coverity: add coverity support

Run only on push to branch coverity-scan. We can use a cron script to do
this 4 times a week (that's our allowance).

NOTE: possible future improvements are:

1. Fold the build matrix item into another short one so we don't overburden
   travis. It's a little less clear but it should be nicer on the
   infrastructure.
2. Change the security token, one can do that from the coverity admin page.
3. Don't do the naive `make depend`, but use the prebuilt libraries.
readme: add coverity scan badge
travis/coverity: hotfix, alwasy return success

It seems the coverity script likes to return 1 (error) when the current
branch does not follow its pattern. Temporarily disable that.
travis/coverity: hotfix #2, unbreak build

I hadn't spotted that the `sh -e` commandline was being used. I *think* this
is what's causing the exit 0 line not to run. Pray for success.

It's a real shame I can't this locally, what a mess.
Make it easier to turn the bundled dependencies off.
Fix unused variable when NDEBUG is defined.

Occurs when compiling with:
  rm -rf build/ && make clean && make cmake CFLAGS='-DNDEBUG' && make
  ^--important
Merge #714 'Fix unused variable when NDEBUG is defined'
Add --api-metadata command line option

- New command line option prints the binary API metadata object
  and exits
Rename --api-metadata to --api-msgpack-metadata
Merge pull request #779 'Add --api-msgpack-metadata command line option'
Move documentation from function declarations to definitions

Uses a perl script to move it (scripts/movedocs.pl)
Add automatic generation of headers

- The 'stripdecls.py' script replaces declarations in all headers by includes to
  generated headers.
  `ag '#\s*if(?!ndef NEOVIM_).*((?!#\s*endif).*\n)*#ifdef INCLUDE_GENERATED'`
  was used for this.
- Add and integrate gendeclarations.lua into the build system to generate the
  required includes.
- Add -Wno-unused-function
- Made a bunch of old-style definitions ANSI

This adds a requirement: all type and structure definitions must be present
before INCLUDE_GENERATED_DECLARATIONS-protected include.

Warning: mch_expandpath (path.h.generated.h) was moved manually. So far it is
the only exception.
Remove remaining declarations with new script: finddeclarations.pl
Surround nvim/func_attr.h includes with define/undef DEFINE_FUNC_ATTRIBUTES

Required for FUNC_ATTR_UNUSED to work in lib/k*