Added a Bukkit metadata API
Added arrows and wither skulls support to get/set_entity_spec
Added extension_exists
Fixed IndexOutOfBoundsException in function_exists and event_exists that was thrown when no argument was given
Fixed typo
Fixed infinite loops due to recursion and fixed typo
Better way to find the most specific class.
Add hmac_md5 and hmac_sha1 functions to the Crypto library
Create a hmac_sha256 method.
This is so that there is an HMAC method for each of the provided hash functions.
Also reduced redundant code by creating a method that accepts the hmac algorithm and returns the generated CString.
Use the passed in algorithm when creating the signing key.
Change to using a multicatch for getHMAC exception handling.
Add optimization flags to the hmac methods.
Since an hmac with the same value and key will return the same hash, constant_offline and cache_return can be used.
Merge pull request #227 from PseudoKnight/master

Revert two commits causing performance issues
Support die() in x_new_thread()
Fix issue in BukkitConvertor.runOnMainThreadAndWait().
Add more information to some exceptions.

If an exception has an unknown target, that's always a bug. However, those types of bugs tend to be hard to track down, so this commit adds more information to the exception report if debug mode is on.
Add target info in many more places.
Fixed OoBE in query()
Ignore SQLException in some cases.

The parameter meta data can't always be accessed, so we don't want to rely on it existing. If it's there, we'll use it, if not, oh well, the database will still cause an error if null isn't acceptable, we just can't check for it specifically. Fixes 2945.
Fixed misuse of rs.wasNull(). Fixes 2944
Check for empty expression in expr().

Fixes 2925.
Fixed 2932 and 2931.

If the UTF-8 Byte order mark is present, it is discarded. A compiler error has been fixed, where the topmost level in a compile unit wasn't having its argument length checked. This rarely would practically happen, as most scripts are composed of several statements, so sconcat would have been the top level, which accepts any number of arguments. Additionally, if trigger() isn't supported for a particular event, it is recognized and a CRE is thrown instead of a java exception. Event.convert now accepts a Target, so that any exception provided by trigger can be linked properly. Individual events still need review to ensure they are using the Target however.
Added email().

This adds the ability to send emails from scripts, with relatively little code.