NCBC-425: SetSocketOption throws exception under mono runtime

This fixes the bug that threw the exception and makes the LingerOptions an
optional configuration by adding lingerEnabled and lingerTime options to the
socketPool configuration in the app.config. The socket will use the
default linger options (as defined by the IP stack) if lingerEnabled is
false or not set in the configuration. If lingerEnabled is true and the
lingerTime value is specified is zero, then no linger time will be used.
If lingerEnabled is true and the lingerTime is greater than zero, the
linger time will be set to the value specified in the lingerTime option.
You can change these values like so in the App.Config:
<socketPool lingerEnabled=true lingerTime=00:00:10/>

Ref: LingerOption Class MSDN

Change-Id: If0cc540c077b59ab9684fd7b0b8559dac8e9b73e
Reviewed-on: http://review.couchbase.org/35163
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Mark Nunberg <mnunberg@haskalah.org>