decode: update API to return error

Here's an RFC on implementation of decoding API update.

In some cases, the decoding is not possible and some really invalid
packet can be created. This is in particular the case of tunnel. In
that case, it is more interesting to forget about the tunneled
packet and only consider the original packet.

PR build: https://buildbot.suricata-ids.org/builders/regit/builds/56

Implement: https://redmine.openinfosecfoundation.org/issues/746