Fix hostnameVerifier using a config Option[Class]

Use Play.application.classloader to load hostnameVerifierClass, change parser to use "ws.ssl.hostnameVerifierClass" and change SSLConfig to take a class instead of a String.
Set the test suite to be sequential

17:49:51,524 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:16 - RuntimeException in Action for tag [configuration] java.util.ConcurrentModificationException
	at java.util.ConcurrentModificationException
	at 	at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
	at 	at java.util.HashMap$EntryIterator.next(HashMap.java:834)
	at 	at java.util.HashMap$EntryIterator.next(HashMap.java:832)
	at 	at java.util.HashMap.putAllForCreate(HashMap.java:435)
	at 	at java.util.HashMap.<init>(HashMap.java:225)
	at 	at ch.qos.logback.core.ContextBase.getCopyOfPropertyMap(ContextBase.java:68)
	at 	at ch.qos.logback.classic.spi.LoggerContextVO.<init>(LoggerContextVO.java:46)
	at 	at ch.qos.logback.classic.LoggerContext.updateLoggerContextVO(LoggerContext.java:86)
	at 	at ch.qos.logback.classic.LoggerContext.putProperty(LoggerContext.java:92)
	at 	at ch.qos.logback.core.util.ContextUtil.addHostNameAsProperty(ContextUtil.java:75)
	at 	at ch.qos.logback.classic.joran.action.ConfigurationAction.begin(ConfigurationAction.java:57)
	at 	at ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:275)
	at 	at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:147)
	at 	at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:129)
	at 	at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)
	at 	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:149)
	at 	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:135)
	at 	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:99)
	at 	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:49)
	at 	at play.api.Logger$$anonfun$configure$3.apply(Logger.scala:255)
	at 	at play.api.Logger$$anonfun$configure$3.apply(Logger.scala:255)
	at 	at scala.Option.foreach(Option.scala:236)
	at 	at play.api.Logger$.configure(Logger.scala:255)
	at 	at play.api.Application$class.$init$(Application.scala:272)
	at 	at play.api.test.FakeApplication.<init>(Fakes.scala:211)
	at 	at play.api.test.WithApplication$.$lessinit$greater$default$1(Specs.scala:20)
	at 	at play.api.libs.ws.ssl.DefaultSSLConfigParserSpec$$anonfun$1$$anonfun$apply$92$$anon$6.<init>(DefaultSSLConfigParserSpec.scala:148)
	at 	at play.api.libs.ws.ssl.DefaultSSLConfigParserSpec$$anonfun$1$$anonfun$apply$92.apply(DefaultSSLConfigParserSpec.scala:148)
	at 	at play.api.libs.ws.ssl.DefaultSSLConfigParserSpec$$anonfun$1$$anonfun$apply$92.apply(DefaultSSLConfigParserSpec.scala:148)
	at 	at org.specs2.matcher.Scope$$anon$3.asResult(ThrownExpectations.scala:120)
	at 	at org.specs2.execute.AsResult$.apply(Result.scala:253)
	at 	at org.specs2.specification.Example$$anonfun$apply$1.apply(Fragment.scala:209)
	at 	at org.specs2.specification.Example$$anonfun$apply$1.apply(Fragment.scala:209)
	at 	at org.specs2.specification.Example.execute(Fragment.scala:176)
	at 	at org.specs2.specification.FragmentExecution$$anonfun$1.apply(FragmentExecution.scala:46)
	at 	at org.specs2.specification.FragmentExecution$$anonfun$1.apply(FragmentExecution.scala:46)
	at 	at org.specs2.execute.ResultExecution$class.execute(ResultExecution.scala:22)
	at 	at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:116)
	at 	at org.specs2.specification.FragmentExecution$class.executeBody(FragmentExecution.scala:28)
	at 	at org.specs2.reporter.SbtConsoleReporter.executeBody(SbtReporter.scala:20)
	at 	at org.specs2.specification.FragmentExecution$class.execute(FragmentExecution.scala:46)
	at 	at org.specs2.reporter.SbtConsoleReporter.execute(SbtReporter.scala:20)
	at 	at org.specs2.specification.FragmentExecution$$anonfun$executeFragment$1$$anonfun$apply$1.apply(FragmentExecution.scala:35)
	at 	at org.specs2.specification.FragmentExecution$$anonfun$executeFragment$1$$anonfun$apply$1.apply(FragmentExecution.scala:35)
	at 	at org.specs2.control.Exceptions$class.catchAllOr(Exceptions.scala:54)
	at 	at org.specs2.control.Exceptions$.catchAllOr(Exceptions.scala:109)
	at 	at org.specs2.specification.FragmentExecution$$anonfun$executeFragment$1.apply(FragmentExecution.scala:35)
	at 	at org.specs2.specification.FragmentExecution$$anonfun$executeFragment$1.apply(FragmentExecution.scala:35)
	at 	at org.specs2.reporter.DefaultExecutionStrategy$class.executeWithBarrier$1(ExecutionStrategy.scala:118)
	at 	at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$executeConcurrently$1$$anonfun$apply$6.apply(ExecutionStrategy.scala:120)
	at 	at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$executeConcurrently$1$$anonfun$apply$6.apply(ExecutionStrategy.scala:120)
	at 	at scalaz.concurrent.Promise$Unfulfilled$.fulfill(Promise.scala:125)
	at 	at scalaz.concurrent.Promise$Done.eval(Promise.scala:153)
	at 	at scalaz.concurrent.Promise$$anonfun$e$1.apply(Promise.scala:17)
	at 	at scalaz.concurrent.Promise$$anonfun$e$1.apply(Promise.scala:17)
	at 	at scalaz.concurrent.Actor.scalaz$concurrent$Actor$$act(Actor.scala:44)
	at 	at scalaz.concurrent.Actor$$anonfun$schedule$1.apply$mcV$sp(Actor.scala:40)
	at 	at scalaz.concurrent.Actor$$anonfun$schedule$1.apply(Actor.scala:40)
	at 	at scalaz.concurrent.Actor$$anonfun$schedule$1.apply(Actor.scala:40)
	at 	at scalaz.concurrent.StrategysLow$$anon$3$$anon$4.call(Strategy.scala:65)
	at 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at 	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at 	at java.lang.Thread.run(Thread.java:662)
Fix securerandom (will fix build, maybe)
Merge pull request #2836 from wsargent/fix-2779

Change hostname verifier to use thread's classloader