Add Bessel functions to SpecialFunctions.

- Split SpecialFunctions files in to a separate BesselFunctions file.

In particular add:
    - Modified bessel functions of the second kind k0, k1, k0e, k1e
    - Bessel functions of the first kind j0, j1
    - Bessel functions of the second kind y0, y1
diff --git a/Eigen/src/Core/GenericPacketMath.h b/Eigen/src/Core/GenericPacketMath.h
index 3118e4e..22db467 100644
--- a/Eigen/src/Core/GenericPacketMath.h
+++ b/Eigen/src/Core/GenericPacketMath.h
@@ -84,8 +84,7 @@
     HasErf = 0,
     HasErfc = 0,
     HasNdtri = 0,
-    HasI0e = 0,
-    HasI1e = 0,
+    HasBessel = 0,
     HasIGamma = 0,
     HasIGammaDerA = 0,
     HasGammaSampleDerAlpha = 0,
diff --git a/Eigen/src/Core/arch/AVX/PacketMath.h b/Eigen/src/Core/arch/AVX/PacketMath.h
index 2e5f5e5..0472e98 100644
--- a/Eigen/src/Core/arch/AVX/PacketMath.h
+++ b/Eigen/src/Core/arch/AVX/PacketMath.h
@@ -73,8 +73,7 @@
     HasExpm1  = 1,
     HasExp  = 1,
     HasNdtri = 1,
-    HasI0e  = 1,
-    HasI1e  = 1,
+    HasBessel  = 1,
     HasSqrt = 1,
     HasRsqrt = 1,
     HasTanh  = EIGEN_FAST_MATH,
diff --git a/Eigen/src/Core/arch/AVX512/PacketMath.h b/Eigen/src/Core/arch/AVX512/PacketMath.h
index 67e6676..589ccbb 100644
--- a/Eigen/src/Core/arch/AVX512/PacketMath.h
+++ b/Eigen/src/Core/arch/AVX512/PacketMath.h
@@ -99,8 +99,7 @@
     HasExpm1  = 1,
     HasNdtri = 1,
 #endif
-    HasI0e  = 1,
-    HasI1e  = 1,
+    HasBessel  = 1,
     HasExp = 1,
     HasSqrt = EIGEN_FAST_MATH,
     HasRsqrt = EIGEN_FAST_MATH,
diff --git a/Eigen/src/Core/arch/GPU/PacketMath.h b/Eigen/src/Core/arch/GPU/PacketMath.h
index bdbaa53..5a66e2d 100644
--- a/Eigen/src/Core/arch/GPU/PacketMath.h
+++ b/Eigen/src/Core/arch/GPU/PacketMath.h
@@ -45,8 +45,7 @@
     HasErf = 1,
     HasErfc = 1,
     HasNdtri = 1,
-    HasI0e = 1,
-    HasI1e = 1,
+    HasBessel = 1,
     HasIGamma = 1,
     HasIGammaDerA = 1,
     HasGammaSampleDerAlpha = 1,
@@ -80,8 +79,7 @@
     HasErf = 1,
     HasErfc = 1,
     HasNdtri = 1,
-    HasI0e = 1,
-    HasI1e = 1,
+    HasBessel = 1,
     HasIGamma = 1,
     HasIGammaDerA = 1,
     HasGammaSampleDerAlpha = 1,
diff --git a/Eigen/src/Core/arch/SSE/PacketMath.h b/Eigen/src/Core/arch/SSE/PacketMath.h
index 0aadefa..b48d70a 100755
--- a/Eigen/src/Core/arch/SSE/PacketMath.h
+++ b/Eigen/src/Core/arch/SSE/PacketMath.h
@@ -114,8 +114,7 @@
     HasExpm1  = 1,
     HasNdtri = 1,
     HasExp  = 1,
-    HasI0e  = 1,
-    HasI1e  = 1,
+    HasBessel  = 1,
     HasSqrt = 1,
     HasRsqrt = 1,
     HasTanh  = EIGEN_FAST_MATH,
diff --git a/Eigen/src/Core/util/ForwardDeclarations.h b/Eigen/src/Core/util/ForwardDeclarations.h
index 7499450..953f52a 100644
--- a/Eigen/src/Core/util/ForwardDeclarations.h
+++ b/Eigen/src/Core/util/ForwardDeclarations.h
@@ -215,13 +215,26 @@
 template<typename Scalar> struct scalar_erf_op;
 template<typename Scalar> struct scalar_erfc_op;
 template<typename Scalar> struct scalar_ndtri_op;
-template<typename Scalar> struct scalar_i0e_op;
-template<typename Scalar> struct scalar_i1e_op;
 template<typename Scalar> struct scalar_igamma_op;
 template<typename Scalar> struct scalar_igammac_op;
 template<typename Scalar> struct scalar_zeta_op;
 template<typename Scalar> struct scalar_betainc_op;
 
+// Bessel functions in SpecialFunctions module
+template<typename Scalar> struct scalar_bessel_i0_op;
+template<typename Scalar> struct scalar_bessel_i0e_op;
+template<typename Scalar> struct scalar_bessel_i1_op;
+template<typename Scalar> struct scalar_bessel_i1e_op;
+template<typename Scalar> struct scalar_bessel_j0_op;
+template<typename Scalar> struct scalar_bessel_y0_op;
+template<typename Scalar> struct scalar_bessel_j1_op;
+template<typename Scalar> struct scalar_bessel_y1_op;
+template<typename Scalar> struct scalar_bessel_k0_op;
+template<typename Scalar> struct scalar_bessel_k0e_op;
+template<typename Scalar> struct scalar_bessel_k1_op;
+template<typename Scalar> struct scalar_bessel_k1e_op;
+
+
 } // end namespace internal
 
 struct IOFormat;