Simplify Spi implementations. (#2663)

Using `object`s instead of a hollow class as the "factory" for an Spi makes them being singleton by default, which reduces boilerplate to implement an Spi.

The `Dependencies` object is not used anywhere and there might be better alternatives which we can decide on once the need of them comes up. For now, the Spi's interfaces are relatively tightly coupled to their current default implementations anyway.

Also updated documentation.
diff --git a/tests/src/test/resources/application.conf b/tests/src/test/resources/application.conf
index 3dbdb36..873d223 100644
--- a/tests/src/test/resources/application.conf
+++ b/tests/src/test/resources/application.conf
@@ -1,7 +1,5 @@
 
 whisk.spi {
-  DependentSpi = whisk.spi.DepSpiImpl
-  TestSpi = whisk.spi.TestSpiImpl
   SimpleSpi = whisk.spi.SimpleSpiImpl
   MissingSpi = whisk.spi.MissingImpl
   MissingModule = missing.module