Import additional basic cfn functions
Let output_value handle the values (and escaping)
Not all objects have properties
Missing comma, Tags aren't always the last element
Shorter functional version
Shorter functional version
Because of type checks, we should not to convert booleans to strings
Some basic string escaping
Handle cases when it would be something else (like a dict)
Handle other cases (other complex structures)
Tries to convert JSON structures into troposphere functions/objects

The general case is when the function has the same name as the key.
If not, 3 other quirk cases are handled (depending on the type of
value in function_quirks dict (respectively string, list, dict):
- The function has a different name.
- The key expects an array of function calls.
- The function requires a mapping of input values for its arguments.

I added the values for the available examples (except for the
OpenStack ones and the one depending on awacs). Many additional
cases should handled by adding some values in some tables, though
probably not all cases.

It needs an additional patch to add imports for the additional
function calls.
Work-around for object aliases

Some objects have different types depending on where they are.
This is a work-around that renames the resources to the right
type.
Additional imports for functions

Some object types might need addtional functions to be loaded.
This is not ideal (too many things get loaded), but works
within the current set-up.
Handle AWS::CloudFormation::Init as a helper function