Rename Module to ModuleInfo

Module was only used to send information about a Module over the
network. Now the name "Module" can be used by the code actually
running on a Module.
Rename ModuleApplicationManager to Module

ModuleApplicationManager provides a high level view of what a module
is doing, so Module is a better name for it.
Remove unnecessary attributes

Module was storing values from the config in a attributes, replaced
them with calls to config where they were used.
Minor changes to Module
Fix locking for shutdown in Module
Rename BlockID to ApplicationBlockID

BlockID contained the actual block ID as well as the ID of the
application, so the name was misleading.
Add ModuleBlockManager

ModuleBlockManager handles adding and remove FunctionBlocks from
BlockTypeHolders thus removing this functionality from Module
Minor fix
Fix synchronisation of runningApps in Module
Reorder attributes in Module
Rename methods, attributes in Application
Add FIXME
state temp
Rewrite state handling in Application

Application was using a boolean isRunning to check if start() had
been called and a ReadWriteLock to see if shutdown() had been called
(plus synchronization for that). It now uses a three state enum as
well as a ReadWriteLock for all actions involving the state.
Some other synchronization has been modified as well.
Merge branch 'refactor'
Fix locking bug in HashStorage
Make HashStorage return Hash along with value
Add global ByteCodeStorage, rewrite AppClassLoader

Every Module now has a HashStorage<byte[]> that is used to cache
byte code.
ApplicationClassLoader has been simplified.
Remove stale tests

ModuleMainTest and MessageDeEnCodingTest have not been maintained
for a while, so I removed them for now. Will be replaced with
different tests.
Modify ValueMessageAdapter

Some clean up, handles null for Module (the same way as null
returned by Module.getApplication(): use the default ClassLoader
only)