Compile a value and append to generated code
@param {Value} value
@returns {string} - the resulting variable name
@private
function compileValue(value) {
		if (value.subtype === 'array') {
			return compileArray(value)
		} else if (value.subtype === 'object') {
			return compileObject(value)
		} else if (value.subtype === 'mixin') {
			return compileMixin(value)
		} else if (value.subtype === 'js') {
			return compileJS(value)
		} else if (value.subtype === 'function') {
			return compileFunction(value)
		}
		throw new Error('Invalid subtype: ' + value.subtype)
	}