THRIFT-2420 Go argument parser for methods without arguments does not skip fields

Patch: Frank Schroeder & Jens Geyer
THRIFT-2425 PHP: Server-side support for Multiplexing Services

Patch: Aldo Armiento
Recursive structs support in parser

A common complaint is that you can't express trees or other recursive structures in thrift easily - unlike protobufs. This diff loosens up the parser to allow using structs before they are defined (and uses typedef as a forward declaration).
This diff is actually enough to make recursive types work for some dyamic languages (I tried php, works out of the box!)

Other languages will need forward declarations, or ways to box types, to make this work (i.e. C++ needs both forward decls and a way to express structs as pointers)
C++ support for recursive structs.

For cpp added a cpp.ref annotation.  Users will have to make some recursive types use references to avoid a struct containing itself.  Also had to explicitly check for null references when reading/writing, so we know to set the reference to null.

Merge from fb's branch of https://github.com/facebook/fbthrift/commit/9b36d51579bca5ca1c77be333693aa104e8ed141

Fb uses C++11 extensively, this merge changes the type to a raw pointer and adds deletes where necessary.  This is *very* similar to how protobufs does it.
Review - less delete/new, minor indent fixes