Added Guava as compile and runtime dependency
Made blueprint configuration nearly immutable
Added @Throws annotation
Removed conversion to unmodifiable map, because we work now with an
immutable map internally