BUGFIX reflect default argument promotions in va_* function

char and short variadic arguments automatically promotes to int. This
must be reflected in va_arg() and the int type is supposed to be used
as type to obtain instead of the original type.

Furthermore, the last non-variadic argument cannot be regiter variable,
function, array or automatically promoted type.

In same case, we are using enum type as the last non-variadic and variadic
arguments and above restrictins were not reflected. Even that the
enum is represented as int on common architectures / by common compilers,
the restrictions should be reflected.

Fixes #12
diff --git a/src/messages_server.h b/src/messages_server.h
index feb5bdc..c615786 100644
--- a/src/messages_server.h
+++ b/src/messages_server.h
@@ -111,7 +111,7 @@
  * @brief Create a server error structure. Its \<error-message\> is filled with
  * a general description of the specific error.
  *
- * @param[in] tag \<error-tag\> of the server error. According to the tag, the
+ * @param[in] tag \<error-tag\> of the server error specified as #NC_ERR value. According to the tag, the
  * specific additional parameters are required:
  * - #NC_ERR_IN_USE
  * - #NC_ERR_INVALID_VALUE
@@ -145,7 +145,7 @@
  *   - no additional arguments
  * @return Server error structure, NULL on error.
  */
-struct nc_server_error *nc_err(NC_ERR tag, ...);
+struct nc_server_error *nc_err(int tag, ...);
 
 /**
  * @brief Create a server error structure based on libyang error.