Add an option defs_as_proplists / -pldefs

The purpose is to make the generated code independent of gpb,
even at compile time.  (Since long ago, there is no dependency at
run-time.)  The compile time dependency was due to the introspection
functions in the generated code returned #field{} records,
and the generated erlang file contains an include line to gpb.hrl.
Now, the options offer the ability to generate code that
returns proplists instead of records.  Yet, should the need arise, the
gpb module contains conversion functions to get the proplists back
to #field{} records.
Improve eunit tests for msg and enum introspection
Move nif c++ details to a separate file
Add a note about version numbering to the README

Also state that the single source of the version number is the git tag
Add a note about contributing to the README
Update copyright year
Add option descriptor/-descr to generate description

The descriptor option specifies whether or not to generate a
function, descriptor/0, which returns a binary that describes the
proto file(s) contents according to the protobuf's descriptor.proto.
Change all calls f/1,2 to a macro, ?f/1,2

The purpose is to make it possible for the Erlang compiler to detect
malformed io_lib:format arguments already at compile-time.
Bugfix compilation of several proto files

Previously only the first file was compiled.
Add options msg_name_prefix and module_name_prefix

These options can be useful when including sub-project with colliding
message (= record) names or colliding proto file (= module) names.

The corresponding command line options are -modprefix and -msgprefix.
Add recent changes to the ChangeLog