Properly handle enum discriminant overflows.

This both checks for enum values that are illegal due to overflow and
ensures we do not overflow on valid enums.
diff --git a/tests/ui/enum_overflows.stderr b/tests/ui/enum_overflows.stderr
new file mode 100644
index 0000000..3d1b370
--- /dev/null
+++ b/tests/ui/enum_overflows.stderr
@@ -0,0 +1,9 @@
+error: overflowed on value after 4294967295
+  --> $DIR/enum_overflows.rs:10:5
+   |
+10 | /     enum Bad {
+11 | |         D = 0xfffffffe,
+12 | |         E,
+13 | |         F,
+14 | |     }
+   | |_____^