Refactored build to use make.go

This commit creates a file called make.go which takes care of building
the project. Makefiles just call this to do the build. This approach is
required to support cross-platform builds without managing different
build toolchains

  go run make.go -> Will do a full compile
  go run make.go --install -> Will do a install to the default prefix
  go run make.go --install --prefix /tmp -> Installs to /tmp
  go run make.go --test -> Runs the tests

On Make supported machines, this can be executed by

  make
  make install
  prefix=/tmp make install
  make test

This also combines, gauge-java and common to the gauge repository. No
more submodules and different repos
Executing multiple spec files through console
[build] Compiling only the changed parts of codebase

Each directory to be compiled will be hashed and the hash is used to
compare against changes. If there are no change, none of the components
will be built

Writes the touch files to tmp directory
[build] Fixing install on Windows
Installing java.properties file
Fixing formatter test
Adding Ruby support

    #Rubygem won't bundle executable

    #Installing gauge runtime files as a gem

    #Updating ruby build to make.go

    #Merge branch 'master' into ruby

    #Merging master to ruby

    #Getting step values using API in ruby runner

    #Fixing copy paste error.

    #Adding error response in API message on failure

    #Starting API service before Runner

    #Adding varint gem for faster ProtoBuffer decoding

    #Adding API to get stepValue and parameters from step text

    #Adding execution of hooks

    #Adding sync to STDOUT in ruby runner so console outputs are written without buffering

    #Merge branch 'master' into ruby

    #Adding basic execution for ruby runner. Hooks execution need to be added

    #Adding project initialiation for ruby project. Have to move later to a gem

    #First version of ruby runner
Changing result accumulation mechanism
  * storing into suiteResult
  * notifying plugins with ProtoSuiteResult
Adding ItemType for context. Populating step fragments
adding common as submodule for plugin projects to use
fixing compilation error
renaming field to 'failed'
Converting ProtoTable to GaugeTable in Ruby
Testcase for parsing a single step
Adding tags as field to spec and scenario (removed from items)
Adding row failures to Spec Result. Adding non executed items to ProtoScenario
Populating fragments on arg change in step
Adding Execution time. Removed Argument, only Parameter is present now
Adding copying of fragments so dynamic parameter values dont change when executing table driven scenarios
Fixed - when context fails the scenario items weren't getting added