Add nif test for utf-8 conversions
Update docs to say that nifs can now also encode
Make the #field{} and #rpc{} record names redefineable

The #field{} and now also recently the #rpc{} record names are really
a bit too general and could clash with other code. They should ideally
already from the beginning have been prefixed with gpb, like
uncoordinated change, since they are since long ago part of the API.

Make it possible to override these two record names at compile-time,
with a preprocessor definition. Then if someone is in a situation with
clashing names, they can redefine it locally to get out of trouble.

In some future version, we might break backwards compatibility
and make #gpb_field{} and #gpb_rpc{} the default instead, and anyone
who still needs the old behaviour can preprocessor-define it back.
Parse oneof

The oneof type of fields is described here:
https://developers.google.com/protocol-buffers/docs/proto#oneof

In gpb, each message had a list of #?gpb_field{}s. Now each message
has a list of elements that can be either #?gpb_field{} or
elements at that record position.

Example: Given the following protobuf messages

    message m1 {
        required uint32 f1 = 1;
        oneof x {
            uint32 a1 = 2;
            uint32 a2 = 3;
        }
    }

This would be parsed into the following structure:

    [{{msg,m1}, [#?gpb_field{name=f1, ...},
                 #gpb_oneof{name=x,
                            fields=[#?gpb_field{name=a1},
                                    #?gpb_field{name=a2}]}]}].

I've noticed:

* No name or field number of any oneof field alternatives may appear
  elsewhere in the message, not even inside other oneofs.

* The interpretation is to be that all oneof alternatives, a1 and a2
  in the example above are to be treated as if had they been optional
  fields directly in the m1, except at most one of a1 and a2 can be
  defined.
Bugfix compilation script for descriptor files

It would not always detect the proper sequence of descriptor file
rebuild commands.
Document internal representation of oneof

For oneof fields, input to encoding, as well as output from decoding,
is as follows, the oneof field is either undefined or a two-tuple,
{Name, Value}.

Example: Given the following protobuf messages

    message m1 {
        oneof x {
           uint32 alt1 = 1;
           m2     alt2 = 2;
        };
    }

    message m2 {
        repeated uint32 f1 = 1;
    }

Then the following are valid "erlang-native" types for gpb for this
message:

  #m1{x = undefined}
  #m1{x = {alt1, 4711}}
  #m1{x = {alt2, #m2{f1 = [17, 18, 19]}}}
Update the README.md
Handle oneof in gpb
Handle services in descriptor.

In the self-describing descriptor format, handle services.
Fix spelling in ChangeLog
In the NIF tests, also write a Makefile

This Makefile (of very simple structure) contains the commands to
compile the tests, this can make it much easier to inspect and re-run
a failed test manually.
For eunit tests, add a {i,"../include"} compiler opt

The reason for this is as follows:
* In test, I have a symlink to gpb_eqc.erl
  (I find this is useful since rebar eunit (or make test) will then
  also run the quickcheck tests. Sure, it takes a bit longer, but it
  has found errors that would otherwise have been very hard to
  discover.)
* Up until recently, the gpb_eqc.erl has had its own copy of the field
  record, but that is obviously not good.
* I also run it regularly from Jenkins, but then the setup is slightly
  different.

So in either case, gpb_eqc.erl ouhgt to include gpb.hrl.
Quesion is how to get paths right in all setups (symlinked, Jenkins)

With an include path to the include directory, I can have just
-include("gpb.hrl") in gpb_eqc.erl, it can be symlinked to from
gpb/test, or it can be executed independently, if I properly set
include paths up there. All good.
Handle oneof in gpb_compile
Handle oneof in nifs
Import a new gpb_descriptor.proto from protobuf 2.6.1
Handle oneof in the descriptor

Handle oneof in the self-describing descriptor format.
Specify in README.md that oneof is supported
Merge branch 'oneof'
Test compiling with opts to both return and report errors/warnings
Whitespace changes only: re-indent and clean trailing whitespace