Generalize the remove-outputs check for fully-prunable transactions.

Instead of explicitly testing for the presence of any output, and dealing with this case specially, just interpret it as an empty CCoins.

The case previously caught using the HaveCoins check, is now handled by the generic outs != outsBlock test.

This fixes #3156 and replaces #3143.