CCBC-392: Fix binary incompatibilities with lcb_create_compat

This changeset attempts to alleviate some of the issues experienced by
adding a new field to lcb_create_st. These steps were taken

- Use preprocessor indirection to use a new symbol for future versions.
  Future in-source references to lcb_create_compat will actually forward
  to lcb__create_compat_230 which employs a new structure layout.

- Old 'lcb_create_compat' symbol exists in the source code file only,
  but is not inside the header. Thus older applications which relied on
  the older structure shall be directed to lcb_create_compat()

- The special exception is 2.3.0 which uses the larger structure but
  with an alternate layout. In this case the library tries to perform
  some heuristics to determine the version

- As a limitation, a configuration cache filename cannot be NULL. This
  should not affect any SDKs, but is easily fixable at the user level by
  simply providing a path for the file.

- The lcb_cached_config_st structure has been reordered so that the
  filename starts first and the trailer portion of the structure becomes
  the creation options. This allows more fields to be added to the
  'lcb_create_st' field without bringing about a scenario like this
  again.

Change-Id: Ib4b5b1611a9bf588875b448f7128be97ed4e158c
Reviewed-on: http://review.couchbase.org/36559
Reviewed-by: Brett Lawson <brett19@gmail.com>
Tested-by: Mark Nunberg <mnunberg@haskalah.org>