Fix inclusion in translation units with exceptions disabled. (#196)

If exceptions are disabled via `-fno-exceptions` or `INJA_NOEXCEPTION`, the use
of try-catch is disallowed by the compiler.

This patch makes does two things:
* Gates the use of try-catch in one translation unit on the definition of
  `INJA_NOEXCEPTION`.
* Make it such that translation units compiled with `-fno-exceptions` but no
  `INJA_NOEXCEPTION` implicitly sets `INJA_NOEXCEPTION`.

In the specific case of `ifstream::open`, setting the exceptions bits without
exceptions enabled should trip an assertion just like INJA_ABORT. The nice
message will not be present however, but that is absent when using INJA_ABORT as
well.

After this patch, inja can be successfully included without issue.
diff --git a/include/inja/inja.hpp b/include/inja/inja.hpp
index 86b8a0a..92b6345 100644
--- a/include/inja/inja.hpp
+++ b/include/inja/inja.hpp
@@ -10,6 +10,9 @@
 #else
     #include <cstdlib>
     #define INJA_THROW(exception) std::abort()
+    #ifndef INJA_NOEXCEPTION
+      #define INJA_NOEXCEPTION
+    #endif
 #endif
 
 #include "environment.hpp"
diff --git a/include/inja/utils.hpp b/include/inja/utils.hpp
index fb1736c..836425d 100644
--- a/include/inja/utils.hpp
+++ b/include/inja/utils.hpp
@@ -15,11 +15,15 @@
 
 inline void open_file_or_throw(const std::string &path, std::ifstream &file) {
   file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
+#ifndef INJA_NOEXCEPTION
   try {
     file.open(path);
   } catch (const std::ios_base::failure & /*e*/) {
     INJA_THROW(FileError("failed accessing file at '" + path + "'"));
   }
+#else
+  file.open(path);
+#endif
 }
 
 namespace string_view {
diff --git a/single_include/inja/inja.hpp b/single_include/inja/inja.hpp
index cdca7e1..a69457b 100644
--- a/single_include/inja/inja.hpp
+++ b/single_include/inja/inja.hpp
@@ -10,6 +10,9 @@
 #else
     #include <cstdlib>
     #define INJA_THROW(exception) std::abort()
+    #ifndef INJA_NOEXCEPTION
+      #define INJA_NOEXCEPTION
+    #endif
 #endif
 
 // #include "environment.hpp"
@@ -1842,11 +1845,15 @@
 
 inline void open_file_or_throw(const std::string &path, std::ifstream &file) {
   file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
+#ifndef INJA_NOEXCEPTION
   try {
     file.open(path);
   } catch (const std::ios_base::failure & /*e*/) {
     INJA_THROW(FileError("failed accessing file at '" + path + "'"));
   }
+#else
+  file.open(path);
+#endif
 }
 
 namespace string_view {