Add QCBOREncode_EncodeHead() and other for bstr wrapping

This improves the support for bstr wrapping (so it can be hashed for use cases like COSE).

QCBOREncode_EncodeHead() is now a public function.

There is some simplification to indefinite length encoding.

There is some refactoring that should give smaller code size when bstr wrapping is not used.
diff --git a/test/run_tests.c b/test/run_tests.c
index f8ed83b..8e52dae 100644
--- a/test/run_tests.c
+++ b/test/run_tests.c
@@ -56,6 +56,7 @@
 
 
 static test_entry s_tests[] = {
+    TEST_ENTRY(QCBORHeadTest),
     TEST_ENTRY(EmptyMapsAndArraysTest),
     TEST_ENTRY(NotWellFormedTests),
     TEST_ENTRY(ParseMapAsArrayTest),