transplanted the queue_str_task function from rtenv
enabled the receive mode of USART

(1)Enabled the Rx in USART's setting and modified the IRQ Handler
(2)Created the function "receive_data()" for the purpose of reading a char
removed some rubbish code
basic architecture of the linenoise shell transplantation
accept the words which reading from the user

(1)Modified the Makefile to compile the linenoise
(2)Fixed some Unworkable code
(3)Added the code for the purpose of reading the words from the user
added the missing file "main.h"
implemented strlen() in string.c

(1)Added new file string.c, and also implemented the strlen()
(2)Modified the Makefile to compile the string.c
(3)Replaced the method of calculating the msg_len in queue_str_task() (main.c)
now support linenoiseEditInsert()

(1)Support linenoiseEditInsert()
(2)Using callback functions to avoid directly operating

*The memmove() in linenoiseEditInsert() is not available, need to be solve.
completed the USART read/write functions

(1)Added the Mutex to protect the buffer of the receiving byte
(2)Renamed, Added the full USART read/write functions
(3)Impoved the writting skills
    |- Initialize the callback functions by a dedicated function
    |- Using C99 style initialization for structure
Added new C lib function in string.c

(1)Replaced the old strlen() to the ARM optimized implementation
(2)Added memmove() function
supporting backspace function and hot keys to move the cursor

*The arrow keys are not support as well in this update
supporting some hot keys' function

(1)ctrl+d : Remove char at right of cursor, or of the line is empty, act as end-of-file
(2)ctrl+u : Delete the whole line
(3)ctrl+k : Delete from current to end of line
(4)ctrl+a : Go to the start of the line
(5)ctrl+e : Go to the end of the line
(6)ctrl+l : Clear screen
(7)ctrl+w : Delete previous words
created a dedicated structure for the serial read/write callback functions

(1)Removed linenoiseCallbackFuncInit()
(2)Created the structure serial_ops{}
(3)Implement the puts() instead of the extern function
fixed the Mutex issue which may cause error
supporting TAB key to do text completion

(1)Added memory_op.c
    |- pvPortRealloc()
(2)Support TAB key's function
Bug:the autocomplete can't change the string along with the [TAB] key pressed count increase
renamed send_str() to putstr() and removed the related code in the structure
modified the Makefile to compile the memory_op.c

*Forgot to add to the commit at commit "7a7f"
Rename string-util to string. Correct puts parameter and return value.
Merge linenoise into my branch.

Merge branch 'master' of github.com:shengwen1997/freertos into linenoise_shell

Conflicts:
	main.c
	stm32_p103.c
	string.c
Unify ident in linenoise.c and string.c
Known bug: If user move cursor to left edge of terminal,
It will crash.