Suppress warnings for unused variables using a compiler option

Currently, the generated code suppresses warnings for unusued variables
by assigning to the "_Val" variable, for example:

  _Val = Tmpval5

To be completely safe, that should have been:

  _ = Tmpval5

in case there happens to more than one such assignment in the same
scope.

However, a better way to suppress warnings is to simply use the
'nowarn_unused_vars' compiler option. That method will also work
for more complicated expressions there it would be cumbersome to
suppress warnings by assignment to "_".
Optimize encoding/decoding of NULL in the per and uper back-ends

Don't waste time calling a trivial function in the run-time library
for encoding and decoding of NULL values.
asn1ct_value: Fix type for open type value for uper
asn1_SUITE: Let the per/1 test case also test 'uper'
testPrimString: Increase readability by introducing a roundtrip function

Reduce verbosity and introduce readability by introducing the roundtrip/2
function. That will help us to do future extensions to this test suite.
Eliminate the useless 'telltype' argument in component decoding
Makefile: Add dependencies for header files
Add the asn1ct_imm module
Use asn1ct_imm:effective_constraint/2

It is error-prone to have several copies of the same function.
Use asn1ct_imm to optimize decoding of per and uper

A long term goal is to eleminate the asn1ct_gen_per_rt2ct module
in favor of the asn1ct_gen_per module, so will have
asn1ct_gen_per_rt2ct call asn1ct_gen_per.
Implement encoding of fragmented OCTET STRINGs

Decoding of a fragmented OCTET STRING with the size constrained to a
single value is implemented, but encoding is not implemented, and
decoding is not tested in any test case.

There is no urgent need to support encoding of fragmented OCTET STRINGs,
but not being able to encode such values complicates testing of decoding.
For example, eif we add the following type to PrimStrings.asn1 in the test
suite:

  FixedOs65536 ::= OCTET STRING (SIZE (65536))

then asn1ct:test('PrimStrings') will fail because this value cannot
be encoded.
Optimize decoding of OCTET STRINGs

Decoding of fragmented OCTET STRINGs was only implemented when the size
was constrained to a single value. While at it, support decoding
fragmented OCTET STRINGS in all circumstances.
Teach asn1ct_imm to optimize alignment
Refactor code generation for decoding SEQUENCE/SET

In order to optimize the generated code, we will need data structures
that can be traversed in several passes before the actual code is
generated.

Refactor the code so that if first builds (essentially) a list of
funs that do the actual code generation, and a second function
that will call the funs one at the time.
Do alignment optimization of SEQUENCEs and SETs
Optimize decoding of extensions
Remove unused run-time functions
asn1_SUITE: Only run testExtensionAdditionGroup/1 once
testSetOptional: Correct test case for decoding of corrupt data

Eliminate the spawning of the process since the original bug is
fixed.
Simplify testSetOptional by introducing a roundtrip/2 function