WL#3817: Simplify string / memory area types and make things more consistent

Affects: Server-5.1   —   Status: Complete

The reasons for this change are:

- To get rid of 'byte', which is declared differently on different OS.
  (This is one of the common causes for compiler problems on Windows)

- Get rid of my_string because:
  - This is hard to use with 'const'
  - It's not used consistently.

- To get rid of a lot of casts between char *, byte * and uchar *.
  (This is a potential area of bugs, where we have had several bugs in the'
   past).

- To get rid of potential bugs on operating systems where byte is declared
  as signed but we still assume that we can get a number 0-255 by
  referencing a byte * variable.

- Get rid of gptr, as internally we don't have a good understanding of
  it's need.

- Get rid of a lot of compiler warnings on windows 64 bit when we use
  uint with string functions.

- To make the code more readable by introducing the following semantics:

  - 'char *' points to a string area that is \0 terminated.
  - 'void *' points to a general memory area that needs to be cast to be
    used. Examples: Pointer to functions, structs, objects etc.
  - LEX_STRING is a string object (of my_byte*) that has a pointer. Over
    time we should move most things to this.

- Ensure we can handle bigger memory areas on 64 bit systems.

This change needs to be done at a very late stage of a tree as this will have
an impact of merges.
This task originally was:
  Change uchar *, byte * to my_byte *..  and change my_string to char *

Now the task is:

Simplify our string / memory area types and make things more consistent.

In short the changes should be:

Replace byte * with uchar *
Change my_string to char *
Change my_size_t to size_t
Only use char * for strings that ends with a \0
Get rid of types my_size_t, gptr, byte
Change all string functions that takes a length to use
size_t instead of uint.
- Remove declarations of 'byte', 'my_string', 'size_s' and my_size_t
  from my_global.h
- Replace usage of the above in all code with their correcpt type.

This task should be done in a couple of stages

Stage 1:
- Convert all functions in dbug, strings, mysys, myisam, heap to use
  char * or uchar * depending on the context of the memory area.
- Fix include files
- Fix all function calls to these function
- Remove all not needed casts.

Stage 2:
- Convert files in sql, libmysql, sql_common.

Stage 3:
- Convert files in other storage engines (not critical).
- Convert any other files missing from the above lists.