os : actualizar el branch con las cosas de dropbox

    se puso al tiro el git con los cambios de gibran y jahaziel
    aun no se prueba  nada pero compila

Signed-off-by: Emiliano Gibran Gonzalez Perez <haibrayn@hotmail.com>
Added Cool layout to git tracked files

    Do not replace it again please :)

Signed-off-by: Emiliano Gibran Gonzalez Perez <haibrayn@hotmail.com>
Added globals and modified add_task args

    Now add_task receives 2 arguments, _fptr and uin8_t
the AUTOSTART flag will be pased to the second argument as an or
with the priority value i.e.

    add_task(TaskA, 3 | AUTOSTART);

This way the AUTOSTART macro will appear only in the tasks that
require it.

Renamed the struct variables from '_actual' to '_continue'

Signed-off-by: Emiliano Gibran Gonzalez Perez <haibrayn@hotmail.com>
rtc_os: Functional OS with clean stack

Se limpia el stack al terminar cada task, como una funcion normal lo haria.

En la estructura se guardan los valores del SP y el PC cada vez que se llama
a la funcion de activate task.

Los valores se cargan cada vez que se hace un salto hacia un task que habia
corrido previamente.

Es importante notar que una vez que se mueve el SP, las variables locales se
pierden (toman valores diferentes)

Por lo que es necesario utilizar una variable global que pueda guardar un
registro de 16 bits y otra variable global que contenga el index de la tarea
que esta actualmente corriendo.

Esto ultimo es para evitar iterar sobre la lista de tareas y encontrar la que
esta corriendo.

El registro de 16 bits global se utiliza de la siguiente manera

    registro <= PC al cual se quiere saltar
    SP <= SP al cual se quiere regresar
    X  <= registro
    JMP 0,X

Hay cierta recursion necesaria:

    El scheduler llama a la funcion de run_task, siempre y cuando hay un task
    en estado de ready run_task, llama al task desde el inicio del task, o
    desde un PC especifico, cuando ese task llama a la funcion terminate_task,
    terminate_task regresara los valores a 0 en la estructura que esta
    corriendo, movera el SP al SP que existia en run_task y continuara con la
    ejecucion de run_task.

    Finalmente run_task llamara al scheduler el cual decidira la siguiente
    tarea que debe correr y se repite el proceso, hasta que no existan mas
    tareas en ready, entonces el scheduler caera en un return antes de llamar
    a la funcion de run_task, lo que nos devuelve al primer run_task que se
    llamo, la '}' hara su chamba y terminara la funcion, despues terminara el
    primer scheduler y regresara al main, donde seguira entrando y saliendo
    del scheduler hasta que alguna interrupcion active una tarea.

De esta forma se asegura la ejecucion de todas las tareas pendientes, y el SP
siempre regresara a donde empezo.

Signed-off-by: Emiliano Gibran Gonzalez Perez <haibrayn@hotmail.com>
Added Demo.mcp

Signed-off-by: Emiliano Gibran Gonzalez Perez <haibrayn@hotmail.com>