Fix build with gcc 7 (#957)

1. Add a missing <functional> include
2. Put the // fallthrough comment after the closing bracket so the compiler does not emit a implicit fallthrough warning.
diff --git a/src/emscripten-optimizer/optimizer-shared.cpp b/src/emscripten-optimizer/optimizer-shared.cpp
index 7ba6d4a..212aa11 100644
--- a/src/emscripten-optimizer/optimizer-shared.cpp
+++ b/src/emscripten-optimizer/optimizer-shared.cpp
@@ -155,8 +155,7 @@
     switch (op.str[0]) {
       case '>': {
         if (op == TRSHIFT) return ASM_UNSIGNED;
-        // fallthrough
-      }
+      } // fallthrough
       case '|': case '&': case '^': case '<': case '=': case '!': return ASM_SIGNED;
       case '+': case '-': return ASM_FLEXIBLE;
       case '*': case '/': return ASM_NONSIGNED; // without a coercion, these are double
diff --git a/src/support/threads.h b/src/support/threads.h
index 45c09e6..ec72637 100644
--- a/src/support/threads.h
+++ b/src/support/threads.h
@@ -23,6 +23,7 @@
 
 #include <atomic>
 #include <condition_variable>
+#include <functional>
 #include <memory>
 #include <mutex>
 #include <thread>