Added knc-i1x16.h , knc-i1x8.h and knc-i1x8unsafe_fast.h

### Expanded support for KNC:

* **knc-i1x16.h**:  patched knc.h to pass compiler tests. Only i32, float & double are vectorised; i64 is still scalar for now, still gives good performance;some performance loss from knc.h, reason is not clear (fixed now, the slow down was due to not using mm512_k* masking ops)
* **knc-i1x8.h**:  slow (only double is vectorised), but included for completeness
* **knc-i1x8unsafe_fast.h**: fast, but is not safe in some circumstances (see inside the file for failed tests). FWIW, this one delivers ~10-50% slower performance on double precision code, depending on the code, compared to knc-i1x16.h  Not sure whether this is due to a performance bug in the include or due to KNC in-order architecture (e.g., 2x unroll may reduce bubbles in the pipeline)

The main cause of the fails on knc-i1x8unsafe_fast.h is that KNC ISA doesn't have native types for \<8 x i32\>  and \<8 x float\> (only \<16 x i32\> and \<16 x float\> respectively). If this can be fixed, knc-1x8unsafe_fast.h will pass all the tests which knc-i1x16.h passes and should be as fast as knc-i1x8.h