checks

Adds several compile time checks for const generics.

Idea was based off of this reddit post.

Examples:

```rust

![feature(genericconstexprs)]

struct AlphabeticTest where checks::char::Alphabetic: checks::Passed;

// All letters are alphabetic, check passes. let pass = AlphabeticTest::<'a'>; // Compiles let pass = AlphabeticTest::<'b'>; // Compiles let pass = AlphabeticTest::<'c'>; // Compiles

// Letters are not alphabetic, check fails. let fail = AlphabeticTest::<'1'>; // Compile error! let fail = AlphabeticTest::<'2'>; // Compile error! let fail = AlphabeticTest::<'3'>; // Compile error! ```

Custom checks can be implemented as well: ```rust const fn isbinary(num: u8) -> bool { num == 0 || num == 1 } struct BinaryOnly where Check<{ isbinary(N) }>: Passed;

let pass = BinaryOnly::<0>; // Compiles let pass = BinaryOnly::<1>; // Compiles

let fail = BinaryOnly::<2>; // Compiler error! ```

Checks can also be defined with the check! macro: rust check! { u8 => /// Matches all binary numbers (0, 1) Binary( passes: 0, 1 fails: 2, 3, 4 ): |N| (N == 0 || N == 1) }

Full list of checks can be found on the docs.rs page.