Added support for HMAC-SHA256 and other SHA* algorithms 

I've added a wrapper on top of openssl libraries to bring support in ngx lua for HMAC-SHA* algorithms.
The supported algorithms are: sha1, sha224, sha256, sha384 and sha512.

HMAC-SHA256 is especially important for AWS V4 auth.
To use the existing `digest` method do we even need a new instance? I think it can just be called without reference to `self` and it will work in exactly the same way (i.e. remove `self` argument from the `digest` method and call it like `hmac.digest("sha256", "sec-key", "some msg")`) . 

It doesn't make too much difference I think but it does keep the API a bit simpler and keeps the API similar other libs (e.g. https://github.com/openresty/lua-resty-string/blob/a1596e50e03e6784d2230e16a75395e3211ac440/lib/resty/aes.lua#L128)