Based on profiling with qcachegrind, added hexlify_to_bin/1

## tl;dr 
While profiling my app with `qCacheGrind`, in my case i found 2% of the time spent in the hexlify + hmac256 
This commit introduces `hexlify_to_bin/1` which brought this down to 0.26 %

## Observation 
in most systems that depend on `hmac:hmac256`, `hmac:hexlify` is used to verify signatures.

eg: http://stackoverflow.com/questions/8942359/hmac-sha256-hex-digest-of-a-string-in-erlang-how

    1> hmac:hexlify(hmac:hmac256(<<"7ad3773142a6692b25b8">>,   <<"POST\n/apps/3/channels/test_channel/events\nauth_key=278d425bdf160c739803&auth_timestamp=1272044395&auth_version=1.0&body_md5=7b3d404f5cde4a0b9b8fb4789a0098cb&name=foo">>)).
    "309FC4BE20F04E53E011B00744642D3FE66C2C7C5686F35ED6CD2AF6F202E445"

These usually occur once for every request and since we're dealing with time-critical requests, any improvement here results in faster responses and general beam performance.

## hexlify performance
Here is a call graph of % time spent of the original hexlify code. Consider the generate_signature block at 2.6% which consists of the hmac block (0.03%) and the hexlify block(2+%).
![original_hmac_hexlify](https://cloud.githubusercontent.com/assets/25080/2967215/877deab2-db29-11e3-8efc-750116fbe906.png)

## intermediate performance 
Modified hex.erl from http://necrobious.blogspot.in/2008/03/binary-to-hex-string-back-to-binary-in.html to use binary instead of lists
![intermediate_hmac_hex](https://cloud.githubusercontent.com/assets/25080/2967223/aa2f5596-db29-11e3-9a5f-9f0ac1e97a28.png)

## hexlify_to_bin/1 performance
modifying hex to use tail recursion, bringing generate_signature block down to 0.26% where the hmac block remains at 0.03% but the hex part is only 0.24% - a 10x improvement from the original generate_block of 2.4%.
![final_hmac_hexlify_to_bin](https://cloud.githubusercontent.com/assets/25080/2967229/bb229322-db29-11e3-96ff-1e1fd52ef8ef.png)

At this point with the use of binary and tail recursion - it pretty much does not resemble hex.erl So I forked `erlsha2` and submitted this pull request.

## Can hexlify_to_bin replace hexlify ?
No. here are a few subtle differences:
- returns binary as documented in the spec
- the resultant hex will be in lower case ( as opposed to hexlify that uses B to indicate upper case )

## Tested ?
- Passes the current unit tests. 
- Added a new `hexlify_to_bin_test` in `hmac_test.erl`
- Additionally all current tests now do a list comprehension to test [list, binary] versions of hexlify.
- Here is also a nieve microbenchmark which shows the performance improvement.

```erlang
    > Seq1 = lists:seq(1,100).

    > timer:tc(fun()-> [hmac:hexlify(<<"foo">>) || _X <- Seq1 ] end).
    {2496,
     ["666F6F","666F6F","666F6F","666F6F","666F6F","666F6F",
      "666F6F","666F6F","666F6F","666F6F","666F6F","666F6F",
      "666F6F","666F6F","666F6F","666F6F","666F6F","666F6F",
      "666F6F","666F6F","666F6F","666F6F","666F6F","666F6F",
      "666F6F","666F6F",
      [...]|...]}

    > timer:tc(fun()-> [hmac:hexlify_to_bin(<<"foo">>) || _X <- Seq1 ] end).
    {1527,
     [<<"666f6f">>,<<"666f6f">>,<<"666f6f">>,<<"666f6f">>,
      <<"666f6f">>,<<"666f6f">>,<<"666f6f">>,<<"666f6f">>,
      <<"666f6f">>,<<"666f6f">>,<<"666f6f">>,<<"666f6f">>,
      <<"666f6f">>,<<"666f6f">>,<<"666f6f">>,<<"666f6f">>,
      <<"666f6f">>,<<"666f6f">>,<<"666f6f">>,<<"666f6f">>,
      <<"666f6f">>,<<"666f6f">>,<<"666f6f">>,<<"666f6f">>,
      <<"666f6f">>,<<"666f"...>>,<<...>>|...]}
```

## Conclusion
If nothing, I really recommend using `kcachegrind` or `qcachegrind` ( if on a mac ) if you want to optimize your code but not sure exactly where to start off. And oh, hope you like this PR :)