CRC4: use proper CRC4 table to avoid bit-reversal of each byte

In commit 9bd2c9ffe7cf82c5d0a12406db018717d9b78858 we fixed the CRC4
computation by bit-reversing every byte before using it in the CRC
table.  This is of course a waste of CPU cycles.  Let's just compute
the CRC4 table slightly different (thanks to Dietter):

The following commands using pycrc from pycrc.org were used:
./pycrc.py --width=4 --poly=0x3 --reflect-in=false --reflect-out=false --xor-out=0 --xor-in=0 --algorithm table-driven  --generate c -o crc4itu.c
./pycrc.py --width=4 --poly=0x3 --reflect-in=false --reflect-out=false --xor-out=0 --xor-in=0 --algorithm table-driven  --generate h -o crc4itu.h
diff --git a/src/crc4itu.h b/src/crc4itu.h
index ba8e79a..220b50f 100644
--- a/src/crc4itu.h
+++ b/src/crc4itu.h
@@ -1,3 +1,106 @@
-#pragma once
+/**
+ * \file
+ * Functions and types for CRC checks.
+ *
+ * Generated on Sat May 12 09:41:12 2018
+ * by pycrc v0.9.1, https://pycrc.org
+ * using the configuration:
+ *  - Width         = 4
+ *  - Poly          = 0x3
+ *  - XorIn         = 0x0
+ *  - ReflectIn     = False
+ *  - XorOut        = 0x0
+ *  - ReflectOut    = False
+ *  - Algorithm     = table-driven
+ *
+ * This file defines the functions crc4itu_init(), crc4itu_update() and crc_finalize().
+ *
+ * The crc4itu_init() function returns the inital \c crc value and must be called
+ * before the first call to crc4itu_update().
+ * Similarly, the crc_finalize() function must be called after the last call
+ * to crc4itu_update(), before the \c crc is being used.
+ * is being used.
+ *
+ * The crc4itu_update() function can be called any number of times (including zero
+ * times) in between the crc4itu_init() and crc_finalize() calls.
+ *
+ * This pseudo-code shows an example usage of the API:
+ * \code{.c}
+ * crc_t crc;
+ * unsigned char data[MAX_DATA_LEN];
+ * size_t data_len;
+ *
+ * crc = crc4itu_init();
+ * while ((data_len = read_data(data, MAX_DATA_LEN)) > 0) {
+ *     crc = crc4itu_update(crc, data, data_len);
+ * }
+ * crc = crc_finalize(crc);
+ * \endcode
+ */
+#ifndef CRC4ITU_H
+#define CRC4ITU_H
 
-uint8_t crc4itu(uint8_t crc, const uint8_t *data, unsigned int len);
+#include <stdlib.h>
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * The definition of the used algorithm.
+ *
+ * This is not used anywhere in the generated code, but it may be used by the
+ * application code to call algorithm-specific code, if desired.
+ */
+#define CRC_ALGO_TABLE_DRIVEN 1
+
+
+/**
+ * The type of the CRC values.
+ *
+ * This type must be big enough to contain at least 4 bits.
+ */
+typedef uint_fast8_t crc_t;
+
+
+/**
+ * Calculate the initial crc value.
+ *
+ * \return     The initial crc value.
+ */
+static inline crc_t crc4itu_init(void)
+{
+    return 0x0;
+}
+
+
+/**
+ * Update the crc value with new data.
+ *
+ * \param[in] crc      The current crc value.
+ * \param[in] data     Pointer to a buffer of \a data_len bytes.
+ * \param[in] data_len Number of bytes in the \a data buffer.
+ * \return             The updated crc value.
+ */
+crc_t crc4itu_update(crc_t crc, const void *data, size_t data_len);
+
+
+/**
+ * Calculate the final crc value.
+ *
+ * \param[in] crc  The current crc value.
+ * \return     The final crc value.
+ */
+static inline crc_t crc_finalize(crc_t crc)
+{
+    return crc;
+}
+
+
+#ifdef __cplusplus
+}           /* closing brace for extern "C" */
+#endif
+
+#endif      /* CRC4ITU_H */