invoice: calculate GTU codes for invoice, implement some tests

Also drive-by fix two proto issues:
 - rename gtu_codes to gtu_code (following convention)
 - move denormalized Item.due_date field past denormalized comment.

Change-Id: Ibfe0a21aadc0a5d4e2f784b182e530b9603aae62
diff --git a/bgpwtf/invoice/proto/invoice.proto b/bgpwtf/invoice/proto/invoice.proto
index ee2b9d8..e6caae5 100644
--- a/bgpwtf/invoice/proto/invoice.proto
+++ b/bgpwtf/invoice/proto/invoice.proto
@@ -264,12 +264,12 @@
     // If sealed, otherwise 'proforma'.
     string final_uid = 3;
     int64 date = 4;
-    int64 due_date = 5;
     // Denormalized fields follow.
+    int64 due_date = 5;
     uint64 total_net = 6;
     uint64 total = 7;
     string unit = 8;
-    repeated GTUCode gtu_codes = 10;
+    repeated GTUCode gtu_code = 10;
     // Next tag: 11;
 }