Fundamentals of the update system in place

The client will attempt to load files from a local cache, and if not
form a remote location. This is not implemented so will throw an
exception. The development version will update the local cache every
time from the build directory.

Also added the Core.dll project which will contain the actual game code.
This is copied to the local cache and then the EngineCore type is
launched from it.
DirectX initialized and more robust updater

The EngineCore will now initialize the graphics subsystem which will
clear the device to cornflower blue, and there is the ability to enter
fullscreen mode if desired.

Added extra error handling to the client to catch any errors with the
initial connection
Massively improved the updater

Simplified the register and login methods, so a register is also a
login.

When the game window is launched the updater is hidden. When it exits,
the updater is restored.

Added a placeholder logo, version selector and changed the blocking
message boxes to a text string below the logo
Added depth and stencil buffers

Added the creation of the projection and related matrices, and the
creation of the depth and stencil buffers. All the DirectX code has been
moved to the GraphicsCore and out if the EngineCore
Connection to initial Tile server active

A SimulationServerController is now in place that will accept simulation
servers to the metaverse. The login code was tweaked so that when a use
logs in and ip address to a tile server is provided.

The game core now has a struct for launch parameters, and connects to a
the simulation server using UDP.

This is a rough, but workable outline and sufficient for this stage of
development.
Rebase commit

Pull in changes from the metaverse
Sim Server management moved to a gateway

Updated the simulation server controller in the metaverse to use the new
gateway system in preparation for fleshing out the actual simulation
server.
Sim Server Beginnings

Begun creation of the sim server. Able to connect to the metaverse, and
be assigned a tile to then load and simulate
Character Profiles are stored and retrieved

General tidy of some minor files

Added a character profile class to store location about a users avatar.
This is retrieved from the database with other user data upon login. If
not present it is initialised to null.

The Authentication gateway now selects the appropiate simulation server
based on the profiles last known tile, and passes the profile to that
server.

The simulation server will accept and store the profile for the incoming
connection
Set up client encryption

Modified the login process to pass a key and init vector to both the
simulation server and game client. This pre-shared key is used for
security, as well as a randomly assigned GUID to identify the session.
Bug fixes

Fixed a lot of bugs preventing connection between the metaverse and the
simulation server.
*Changed the default port numbers to prevent collisions with other
software
*Added try/catch block to connection to detect client crashes
*Made Vector3 serializable and added a ToString method
*Stopped GenericGateway disposing itself twice
*Able to create tile from the console
*Moved client networking into its own core
Loading tiles from storage

Modified the connection code to handle much larger data transfers, after
much debugging.

The tilemanager is capable of loading and persisting tiles to s3 backed
storage. The simulation gateway is now capable of accepting load and
save requests and passing them on.

The simulation server can send a load request and recieve the returned
tile. No provision has yet been made for saving any changes it makes to
the tile back to storage.
Bug fixes for client encryption

Check the client can connect to the simulation server. Fixed a few bugs
involved in changing the message size from a short to an int, and
corrected a mistake in the simulationservergateway code.
Quality of life metaverse changes

Improved the verbosity of the application to provide more feedback on
what is occuring. Moved some long running functions that interact with
AWS S3 storage to a different location so as not to hang the feedback to
the console.
Fixed disconnect bug

Connection had a bug where it was attempting to read from a closed
sslstream. A check has been added to see if the stream is null.
Tiles are unassigned on disconnect

When a simulation server looses connection, the metaverse tilemanager
sets the tile as unloaded, ready to be assigned to another server
Require admin to run

Due to the ssl credentials used, administrator is required to run the
apps, automatically made it request elevation using app.manifest files