Use the original program source for program creation/compilation

Instead of building the program from source with the added comment
block (used for distinction between different platforms and devices
when offline cache is in use), only use the altered source for the
hash computation. This way users will not get unexpected results from
program.source().
Fix linkage problem with detail::getenv()

detail::getenv() function was not declared inline, which led to
`multiple definition` errors at link time when a program consisted of
multiple objects that included Boost.Compute headers.

Fixed the problem and added core.multiple_objects test.
Merge pull request #47 from ddemidov/multiple-objects

Fix linkage problem with detail::getenv()
Merge pull request #46 from ddemidov/offline-cache

Use the original program source for program creation/compilation
Use SHA1 for online cache keys

This makes online cache use sha1 of the program source as key.
Introduces boost::compute::detail::sha1() function, which is moved
from compute::program into its own header file.
Merge pull request #49 from ddemidov/sha1-for-online-cache

Use SHA1 for online cache keys