Rename hostname fields and methods to reflect usage

The hostname that was supplied when the socket was created is stored as
the "peerHostname"  This is the only one that should be used for Server
Name Indication (SNI) purposes.

The "peerHostname" or the resolved IP address may be used for
certificate validation, so keep the use of "getHostname()" for
cerificate validation.

Bug: 16658420
Bug: 17059757
Change-Id: Ifd87dead44fb2f00bbfd5eac7e69fb3fc98e94b4
Implement write socket timeouts for unbundled apps

Change-Id: I4fd604f057ba4288d4f31bf6b3b93307376023d5
Validate hostname is usable for SNI

According to RFC 6066 section 3, the hostname listed in the Server Name
Indication (SNI) field is a fully qualified domain name and IP
addresses are not permitted.

Bug: 16658420
Bug: 17059757
Change-Id: I804e46b6e66599b2770f0f4f0534467987e51208
Read property to enable SNI

Read the system property "jsse.enableSNIExtension" on whether to enable
Server Name Indication (SNI) extension. For unbundled builds, this will
be enabled by default. For platform builds, this will be disabled by
default.

Bug: 16658420
Bug: 17059757
Change-Id: I774f5406bf3fe601a42c4ef5e708b31800147eb9
Add pre-Honeycomb literal IP matching

This will allow us to run this code on Gingerbread devices and others
that don't have the InetAddress#isNumeric API.

Bug: 16658420
Bug: 17059757
Change-Id: I597d539979d58eeaa2677d6f99e911313a550cc1
Comment out unused parameters and function.

BUG: 17281763
Change-Id: I6874dc0ef6ddaba66d465c07cabeb5e781337716
Fixed build under MinGW
Merge commit 'a96719f834232634e9160873bd4c44834b84eb15'
Merge pull request #1 from bigfatbrowncat/master

Conscrypt fix for the new Android and Windows