Merge remote-tracking branch 'ethereum/develop' into sol_contractCompiler

Conflicts:
	libsolidity/Types.cpp
NEG->BNOT change
Compiler for assignments.
Restructure state tests. Remove FakeStateClass
Merge remote-tracking branch 'upstream/develop' into stateTests
Merge remote-tracking branch 'upstream/develop' into stateTests
New BNOT and SIGNEXTEND tets
Bugfix: Allow empty return statements without type checking.
Contract compiler and also add ExpressionStatement to AST.

ExpressionStatement functions as glue between Statements and Expressions.

This way it is possible to detect when the border between statements and
expressions is crossed while walking the AST. Note that ExpressionStatement is
not the only border, almost every statement can contains expressions.
Merge remote-tracking branch 'ethereum/develop' into sol_contractCompiler
Merge remote-tracking branch 'upstream/develop' into stateTests
Renamed file.
Function selector and variable (un)packing.
Clean up FakeExtVM - move to state tests
Merge remote-tracking branch 'upstream/develop' into stateTests

Conflicts:
	libethereum/AddressState.h
	test/vm.cpp
Merge remote-tracking branch 'upstream/develop' into stateTests
Merge remote-tracking branch 'upstream/develop' into stateTests
Actual contract creator and add solidity to AlethZero interface.
Merge remote-tracking branch 'ethereum/develop' into sol_contractCompiler

Conflicts:
	libsolidity/AST.cpp
	libsolidity/AST.h
	libsolidity/Compiler.cpp
	libsolidity/Compiler.h
	libsolidity/NameAndTypeResolver.h
	libsolidity/Types.cpp
	solc/main.cpp
	test/solidityCompiler.cpp
Bugfix: Swap before mod and div.