1. Add a check to see if there is anything returned before getting the last item.
2. When deserializing JSON, return a case-insensitive Hashtable instance, so `<blah>.Name` works for both `"name": "Joe"` and `"Name": "Joe"`.
- Since we don't pass the logger to the user, it doesn't need to implement `ILogger`. Removing this dependency reduce 8 assemblies from the publish folder.
- The type `Function` is not really needed, so merge it to `FunctionInfo`.
- Make `Params`, `Headers` and `Query` in `HttpRequestContext` case insensitive. So `$req.Query.Name` works for `?name=Joe`.
* Switch to module approach
* misc comment updates
* resolve rebase conflicts
* address dongbo's feedback
* Add new line to end
* use Import-Module and misc feedback
* just set the module path
* fully qualified, no more useLocalScopes
* param block is back and fix multiple execution issue
* reworked PowerShellExtension methods into a PowerShellManager object
* move InitPowerShell into PowerShellManager
* have all logging use correct index in collection
* switch DataAdded to DataAdding
* address Dongbo's feedback
* new lines and fixed Set-ExecutionPolicy
* made timer threadstatic and deleted StartupArgumentsTests
* switch to ThreadStatic stopwatch
* address Dongbo's feedback
* remove messaging
* added headers to a few files
* Add new line to the end
* change to Write-Information
* initial commit of module
* address feedback and move module into worker
* address Dongbo's feedback
* remove psd1 fields and change Set logic
* don't expose vars in psd1
* alpha sort functions
* helper function refactoring