Fixes for DecodeStrict, PrimitiveDecodeStrict, slice decoding and conversion to gospec

The TOML library used go's stdout comparison testing for some parts in decode_test.go, I've converted them over to gospec as this caused complete test failure when adding some simple fmt.Printf statements during debugging.

The DecodeStrict and PrimitiveDecodeStrict functions have been completely rewritten from scratch as not all decodes correct.  

Slice decoding has been corrected - in cases where a slice contained just a single element, the unifySlice function would cause a slice out of bounds error.  This has been corrected by forcing the construction of a new slice of the correct size instead of trying to test and create the proper sized slice.