extend Dereks idea to initialization as well

This extends Derek's idea to singleton creation as well.  Consider in remote_elem.C:

```c++
namespace
{
  // Class to be dispatched by Singleton::setup() 
  // to create the \p RemoteElem singleton.
  // While this actual object has file-level static
  // scope and will be initialized before main(),
  // importantly the setup() method will not be invoked
  // until after main().
  class RemoteElemSetup : public Singleton::Setup
  {
    void setup ()
    {
      RemoteElem::create();
    }
  } remote_elem_setup;
}
```
The Singleton now holds a list of such objects which are dynamically initialized from LibMeshInit by  calling

```c++
Singleton::setup();
```