Added custom configurations for MSVC projects.

The DebugProfile and ReleaseProfile configurations add profiling capabilities to the respective build.
CMake: profiling builds get correct commandlines in MSVC.
Ignore profile build folders created by MSVC build.
Fixed Linux configuration.
Fixed cIniFile's SetValue().

How did we not see this earlier? Each call to SetValue would actually ADD a value!
Major refactoring of redstone

This commit is a refactoring of the redstone code, mainly the functions
handling the removal of invalid blocks from power supplier data
structures. Its aim is to improve performance and potentially reduce the
memory footprint of the data structures.

It works to reduce the amount of GetBlock()s triggered every tick.
Before, a GetBlock() was requested for every single item in the data
lists, as well as for every single redstone block in a chunk. Following
these changes, the AddBlock() event is utilised more effectively to only
update the lists when needed (a block is changed), as well as to insert
the block type (and update it when needed) alongside the coordinates
into the main redstone simulator chunkdata list.

In short, a single GetBlock() is now cached, with this cache being
updated when the simulator is awoken due to a block change.

At least, I *hope* that this is what it does :P
Fixed doors, fixes #453
Renamed g_TorchPlaceable...

...to g_FullyOccupiesVoxel, as recommended by @bearbin
Fixed a door bug and reduced code

Doors wouldn't get powered by repeaters, and some blocks, like glass,
were viable middle blocks when they shouldn't have been.
Merge branch 'master' into IniFileFix
Did some stuff with the vectors
IniFile: Split SetValue() into AddValue() and SetValue().

Each function does what one would assume - AddValue adds a new value, SetValue overwrites existing value (creates a new one if not exists, if instructed to do so).
Documented the cIniFile:AddValue* functions.

Now the documentation really matches the implementation.
Fixed reading the files.

Duplicate values were ignored.
Removed an unused file.
Fixed rails powering
Removed internal methods from public cLuaState interface.

PushFunction(), CallFunction() and GetReturn() are not to be called independently, but rather only by using the Call() templated overrides.
Push() needs to be left in the public part, it is used for pushing results in the ManualBindings.

Preparation for #418.
Lua errors display stack trace.

Fixes #418.
Merge pull request #526 from mc-server/IniFileFix

Fixed cIniFile's SetValue().
Merge pull request #532 from mc-server/LuaStateErrorHandler

Lua state error handler