add llseek to driver (does not work though)

added a llseek to the fops, and a unit test (also built by make) to call
lseek; although this compiles and actually does call the llseek in the
driver, the parameters are all mucked up, the off is a large number
which changes on each insmod, and the whence is always 0; hence this is
all still very much wip and not ready to merge

there is a stack overflow issue for this here:
http://stackoverflow.com/questions/18115218/llseek-not-behaving-in-kernel-driver
remove debug printk
clean up unit test

I found the problem with llseek, it was simply compiled against the
wrong kernel cfg, all the code so far should work if compiled correctly;
hence this cleans up the unit test to use the FILE * operations as they
are cleaner
fix utest - this driver uses \n\r to do a new line
allow am to be enabled/disabled

am (automatic margins) are the default behaviour such that the cursor
wraps to the next line if it runs off the end of the line (eol).

previously am was the only behaviour the driver supported, but it is
sometimes useful to just stop printing chars if the cursor runs off the
end (ie trunk the line); hence I added 2 \em and \eM to enable and
disable the am respectively (when disabled the line is truncated to the
screen size)

note with am mode off if the cursor runs to the eol and am mode is
re-enabled, the cursor will return to the last position of that line
(hence a \n\r might be needed if the caller wants to write to the next
line and not overwrite the last char on the line that was overrun); I am
not sure if this is a problem that needs fixing atm

note this solves the issue if ncurses not being able to print to the
lower right hand conner of the screen as now the terminal can know via
the rmam=\EM, smam=\Em, commands how to turn on and off am to reach that
position
tidy up module cfgs and modes

this module is designed to operate in 2 ways, this patch implements the
2 ways described below and makes some existing modes more clear:

 1) get a splash screen message on the display asap so the lcd doesnt
 look dead; this requires the use of early_initcall(), but when the
 module loads the device nodes cannot be created and the kernel hangs,
 this is the "in kernel mode"; the solution to this problem is if the
 driver is compiled not as a module ie in kernel, then all it will do is
 init the lcd and display a message (override the define yourself if you
 want), then it will release all its resources as though it doesn't
 exist anymore

 2) as a actual driver for the LCD in normal mode, this is loaded as a
 module, if loaded as a module it may be used stand alone, or with a
 kernel with the driver compiled as in 1). If it is stand alone there is
 the ability to show a initial splash screen via the splash_msg module
 param but this is normally blank, also you will want to do a complete
 lcd hw reset/init so the module param hw_reset is true; If however the
 lcd was started as in 1) then you will not want a splash screen message
 as there already is one, and the lcd hw init/reset will already have
 been done so you dont want to do that as it will flicker (ie call
 insmod fls_lcd.ko hw_reset=0)

splash screen messages can now contain control codes like a write into
the device node (see removal of lcd_puts and addition of lcd_print and
changes to lcd_write)

Note it is a little tricky to load a splash screen message via insmod if
your trying to use escape sequences in the message (note it is ok from
within the C code for "in kernel mode"), here is the way I got it
working:
	* store the msg into a text file:
	echo -e -n "\eJ\n\r    Loading " > msg.txt

	* then load the module (note "\" are needed to make insmod think
	this is a string:
	insmod fls_lcd.ko hw_reset=0 splash_msg="\"`cat msg.txt`\""

note the idea now is you can have the in kernel mode boot up a splash
screen like "  LOADING", and then when the user mode starts you can
run:
	insmod fls_lcd.ko hw_reset=0
the old "  LOADING" message will still be there (ie the screen output
wont be effected), then you can write a progress bar during the init
process unit some other app takes over by doing something like:
	echo -e -n "\n\r   ." > /dev/lcd
	echo -e -n "." > /dev/lcd
	echo -e -n "." > /dev/lcd
	echo -e -n "." > /dev/lcd
etc etc. This provides nice feedback and makes the screen look alive
during boot.