message: use merged in fmt code

Differences in copied code:
- fmt renamed to formatInfo (avoid conflict with package)
- pp renamed to and merged with printer (existing type)
- printer supports Language: this gets rid of bind code!!!
- allow arguments with empty format string (required)
- added args as field to printer (allows incremental argument
  counting for Render)
- use inlined bytes.Buffer

Expected modifications in future CLs and for which this merge
was necessary:
- use localized number formatting
- different handling of lists
- localized formatting of values within complex data types
- non-number argument references.

Change-Id: I497053e5a343ed0bc5694d68e7d04b3cefe9eae2
Edit
Reviewed-on: https://go-review.googlesource.com/44955
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
5 files changed