clone template: update API.md

The user may clone a template from an existing template with different
name.
He can update some attributes when he clone a template.
And he can also customize some parts of the template to save the effort to
create a full new template later.

$ curl -u <usre> -H "Content-Type: application/json" \
-H "Accept: application/json" \
http://localhost:80/test-template-4/clone -X POST -d ''

Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com>
Enhance generate_action_handler to redirect a new resource

POST method may create a new resource. It is better to raise a new
HTTPRedirect to let the client know it.

However there's already a HTTPRedirect for PUT method.

Make use of these codes of PUT method, and make a new method for
HTTPRedirect.

Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com>
clone template: update controller

Add clone action in controller

Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com>
clone template: update model and mockmodel

When clone template, if no name in parameters, kimchi will set a
default name.

Then copy the info from existing template and create a new one.

Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com>
clone template: update test case

update test_rest.py and test_model.py

Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com>