MB-11066: Refactor config parsing code to allow parse at arbitrary time

Refactor the memcached config parsing code to prepare for changes to
allow dynamic config update. This patch does three main things:

* Changes all the error handling to pass back a true/false status code
  (and associated error message if false), instead of printing to
  stderr and exit()ing.

* Change the parsing code to pass in a {settings} struct to be
  populated. This allows a new config to be parsed while the current
  config is unchanged - for example to permit verification of a
  proposed config.

* Change the parsing code to move any "handling" of config changes
  (e.g. loading of specified extensions) from the parsing of the
  config. Again, this paves the way for being able to seperate config
  parsing from applying settings to the system.

Change-Id: I23d9c2c1bee33541f41c3c7d696b8dce1c1294c0
Reviewed-on: http://review.couchbase.org/40749
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>
Tested-by: Trond Norbye <trond.norbye@gmail.com>