Implements offline kernel caching

See #21

This adds `program::build_with_source()` function that both creates and builds the program for the given context with supplied source and compile options. In case `BOOST_COMPUTE_USE_OFFLINE_CACHE` macro is defined, it also saves the compiled program binary for reuse in the offline cache located in `$HOME/.boost_compute` folder on UNIX-like systems and in `%APPDATA%/boost_compute` folder on Windows.

All internal uses of `program::create_with_source()` followed by `program::build()` are replaced with `program::build_with_source()`.